Rumah > Soal Jawab > teks badan
Saya melihat soalan ini dalam forum cnode:
.Node.js semasa mendedahkan antara muka VM, membolehkan anda membuat sendiri konteks js baharu, yang agak berbeza daripada js bahagian hadapan Apabila melaksanakan kod luaran, dengan mencipta konteks baharu Kotak pasir boleh mengelakkan pencemaran konteks:
'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);
Memandangkan anda boleh mengelakkan pencemaran melalui konteks baharu, mengapa Node.js tidak memberikan setiap fail .js konteks bebas untuk mengelakkan pencemaran skop?
Dipetik daripada:
https://github.com/ElemeFE/no...
高洛峰2017-05-16 13:47:41
Siapa kata Node tidak memberikan setiap fail js konteks bebas... Setiap fail .js dalam Node, sebagai modul, sebenarnya dirangkumkan dengan fungsi untuk mendapatkan butiran, sila rujuk modul Node.js yang perlu anda ketahui
Tambahan: Saya salah faham soalan anda. Maksud pembolehubah global ialah "global". Gambaran besar itu sendiri bukanlah masalah, persoalannya adakah anda benar-benar memerlukan gambaran besar?
PHP中文网2017-05-16 13:47:41
Setiap js
文件有独立的module
,仔细看过node
官网的module
部分就能知道,每个模块也就是文件都有自己的全局变量module
,从而能通过module.exports
进行模块导出,每个文件的内容都存在一个闭包中,所以说,所谓的单独上下文其实是有的,看你怎么定义这个单独上下文,如果没有的话,CommonJS
的module
mekanisme tidak lagi wujud.
世界只因有你2017-05-16 13:47:41
Masalahnya sebenarnya agak mengelirukan. Sebenarnya, Node memberikan setiap fail js konteks bebas, tetapi ini tidak dapat mengelakkan pencemaran skop global, sebenarnya, ini adalah kompromi untuk kefungsian.
Sudah tentu, mod ketat boleh digunakan untuk mengelakkan pencemaran global yang disebabkan oleh kecuaian sementara.
PHP中文网2017-05-16 13:47:41
Sudah selesai Nampaknya belum ada yang menjawab soalan ini
Saya temui jawapan pada Zhihu yang hampir boleh menjawab soalan ini Rasanya hampir sama
https://www.zhihu.com/questio...balas0