包含未定义变量的输出脚本

时间:2016-06-10 01:51:54

标签: javascript node.js

我正在编写一个接收一些参数的Node模块,并输出一个客户端脚本,其中包含对document等DOM API的引用。现在它看起来像这样

module.exports = function(a, b){
  return (function(){
            function run(a, b){
               console.log(a + ' and ' + b);
            }

            document.addEventListener('DOMContentLoaded', run(a,b);
         }).toString()
}

然后我可以像

一样使用它
var myModule = require('./myModule.js')
var fs = require('fs)
fs.writeFile('script.js', myModule("A", "B"), () => .....)

这不起作用,因为document没有被定义,但它确实感觉就像我没有想到的那样的某种设计模式。

是否有更好的解决方案来编写输出这样的另一个脚本的脚本?

1 个答案:

答案 0 :(得分:1)

通过将函数括在括号中,即(...),您将执行此函数而不带参数。然后,您将toString()应用于结果。 如果要将函数作为字符串传递,只需将其放在引号中,如下所示:

module.exports = function(a, b){
  return 'function(){
            function run(a, b){
               console.log(a + ' and ' + b);
            }

            document.addEventListener('DOMContentLoaded', run);
         }';
}