我正在编写一个接收一些参数的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
没有被定义,但它确实感觉就像我没有想到的那样的某种设计模式。
是否有更好的解决方案来编写输出这样的另一个脚本的脚本?
答案 0 :(得分:1)
通过将函数括在括号中,即(...)
,您将执行此函数而不带参数。然后,您将toString()
应用于结果。
如果要将函数作为字符串传递,只需将其放在引号中,如下所示:
module.exports = function(a, b){
return 'function(){
function run(a, b){
console.log(a + ' and ' + b);
}
document.addEventListener('DOMContentLoaded', run);
}';
}