eval吗?require读取文件和使用vm它之间是否存在显着的性能差异,或者在引擎盖下是否相同(如果您实现了缓存等,并且只是想在上下文中添加一些变量)如果你查看在node.js中实现加载模块的代码,你会发现require需要使用vm.runInNewContext或vm.runInThisContext.该require然而,做其他一些额外的东西,比如缓存模块.
的节点文档示出了行为是如何VM命令和eval之间相似和不同.
因此,require,eval和vm都有点不同,但所有都可用于加载代码.如果您加载来自客户端的任意代码,它们都会有类似的安全问题.
runInNewContext并不打算用作require或的替代品eval,而是作为一种创建沙箱环境的方式,您可以在其中安全地运行其他脚本。
缺点是它很慢(创建需要大约 10 毫秒)并且占用几兆字节。所以不,不要用它作为require替代品。
| 归档时间: |
|
| 查看次数: |
5096 次 |
| 最近记录: |