此问题以Hogan为例,但适用于任何模板。
我正在尝试制作同构的东西(在客户端和服务器上都有效)。如果我需要胡子文件,请在客户端上:
var tpl = require('./something.ms');
然后浏览器+转换检测到这是一个扩展的胡须文件,tpl
是一个对象,其中一个函数是.render
。
如果我要使用NodeJS运行上述行,我想要完全相同的结果。
默认情况下,Node只是希望这个文件是一个javascript文件,所以结果看起来像这样和错误:
(function (exports, require, module, __filename, __dirname) { <h1>some html</h1> ...
答案 0 :(得分: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);
}