在cnode论坛看到这样一个问题:
目前的 Node.js 将 VM 的接口暴露了出来, 可以让你自己创建一个新的 js 上下文, 这一点上跟前端 js 还是区别挺大的. 在执行外部代码的时候, 通过创建新的上下文沙盒 (sandbox) 可以避免上下文被污染:
'use strict';
const vm = require('vm');
let code =
`(function(require) {
const http = require('http');
http.createServer( (request, response) => {
response.writeHead(200, {'Content-Type': 'text/plain'});
response.end('Hello World\n');
}).listen(8124);
console.log('Server running at http://127.0.0.1:8124/');
})`;
vm.runInThisContext(code)(require);
既然可以通过新的上下文来避免污染, 那么为什么 Node.js 不给每一个.js文件以独立的上下文来避免作用域被污染?
实在是在下学艺不精首先就没弄明白他问的啥,其次是这个问题怎么解决;万望大家不吝赐教,感激不尽,跪谢
引用自:
https://github.com/ElemeFE/no...
与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…