我是 Node 和虚拟机vm2的新手。在后者的文档中,它给出了一个用法示例:
let functionInSandbox = vm.run("module.exports = function(who) { console.log('hello '+ who); }");
functionInSandbox('world');
问题:这实际上在做什么?
首先,为什么要module.exports
在这里使用?即,为什么不将其省略如下?
let functionInSandbox = vm.run("function(who) { console.log('hello '+ who); }");
functionInSandbox('world');
其次,另一种看待它的方式:在常规节点编程中,require(inc)
在一个文件中分配给变量是初学者的知识,在另一个文件中(由 选择inc
)分配给module.exports
. 这与上面的用法有什么不同vm2
?
具体来说:require(...)
在上面是否被隐式调用?如何在一个沙箱中定义(如上)和引用多个模块?
甚至很难知道要问什么问题——真的,我只是希望能解释一下可以与常规节点编程不同的方式module.exports
使用vm2
的方式,突出差异。