1

我可以设置什么扩展名吗?例如:

 .html or .htm 

我可以为某些布局设置自定义扩展吗?喜欢:

 .xml
4

1 回答 1

2

Swig 不关心/不知道扩展。您可以尝试编写自定义加载程序来为您执行此操作。只需复制文件系统加载器并让它检查给定的路径是否不包含扩展名,如果包含,则使用您的默认值。

var fs = require('fs'),
  path = require('path');

module.exports = function (basepath, encoding) {
  var ret = {};

  encoding = encoding || 'utf8';
  basepath = (basepath) ? path.normalize(basepath) : null;

  ret.resolve = function (to, from) {
    if (basepath) {
      from = basepath;
    } else {
      from = (from) ? path.dirname(from) : process.cwd();
    }
    return path.resolve(from, to);
  };

  ret.load = function (identifier, cb) {
    if (!fs || (cb && !fs.readFile) || !fs.readFileSync) {
      throw new Error('Unable to find file ' + identifier + ' because there is no filesystem to read from.');
    }

    // Start of added code...
    var extension = path.extname(identifier);

    if (!extension) {
      // Set this to whatever you want as a default
      // If the extension exists, like 'foo.xml', it won't add the '.html'
      identifier += '.html';
    }
    // End of added code

    identifier = ret.resolve(identifier);

    if (cb) {
      fs.readFile(identifier, encoding, cb);
      return;
    }
    return fs.readFileSync(identifier, encoding);
  };

  return ret;
};
于 2014-10-22T23:09:26.463 回答