1

本题以 Hogan 为例,但适用于任何模板。

我正在尝试制作同构的东西(在客户端和服务器上都可以使用)。如果我在胡子文件中需要,在客户端上:

var tpl = require('./something.ms');

然后 browserify + a transform 检测到这是一个扩展的胡子文件,并且tpl是一个对象,其中一个功能是.render.

如果我要使用 NodeJS 运行上述行,我希望得到完全相同的结果。

默认情况下,Node 只希望这个文件是一个 javascript 文件,所以结果看起来像这样并且错误:

(function (exports, require, module, __filename, __dirname) { <h1>some html</h1> ...
4

1 回答 1

2

我很惊讶这并不容易找到!

http://nodejs.org/api/globals.html#globals_require_extensions

不幸的是,尽管“不太可能消失”,但它已被弃用。我实际上认为它解决了一个我在这种情况下没有看到解决方案的问题。

var Hogan = require('hogan.js');
require.extensions['.ms'] = function(mod, file){
    var tpl = fs.readFileSync(file, {encoding:'UTF-8'});
    mod.exports = Hogan.compile(tpl);
}
于 2014-09-17T13:59:17.737 回答