我最近尝试将文件导入到现有的 Node.js 项目中。我知道这应该用模块编写,但我包含了我的外部 javascript 文件,如下所示:
eval(fs.readFileSync('public/templates/simple.js')+'')
simple.js 的内容如下所示:
if (typeof examples == 'undefined') { var examples = {}; }
if (typeof examples.simple == 'undefined') { examples.simple = {}; }
examples.simple.helloWorld = function(opt_data, opt_sb) {
var output = opt_sb || new soy.StringBuilder();
output.append('Hello world!');
return opt_sb ? '' : output.toString();
};
(是的,谷歌关闭模板)。
我现在可以使用以下方式调用模板文件:
examples.simple.helloWorld();
一切都按预期进行。但是我无法弄清楚这些函数的范围是什么以及我可以在哪里访问示例对象。
一切都在 node.js 0.8 服务器上运行,就像我说的那样,它正在工作......我只是不太知道为什么?
感谢您的澄清。
eval()
将变量放入您调用它的地方的本地范围内。
就好像eval()
被字符串参数中的代码替换。
我建议将文件内容更改为:
(function() {
...
return examples;
})();
这样,你就可以说:
var result = eval(file);
一切的结局/结局将是显而易见的。
Note: eval()
存在巨大的安全隐患;确保您只阅读可信来源的内容。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)