J'ai vu cette question sur le forum cnode :
.Le Node.js actuel expose l'interface de la VM, vous permettant de créer vous-même un nouveau contexte js, ce qui est assez différent du js front-end lors de l'exécution de code externe, en créant un nouveau contexte Sandbox peut éviter la pollution du contexte :
'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);
Puisque vous pouvez éviter la pollution grâce à un nouveau contexte, pourquoi Node.js ne donne-t-il pas à chaque fichier .js un contexte indépendant pour éviter la pollution de portée ?
Cité de :
https://github.com/ElemeFE/no...
Qui a dit que Node ne donnait pas à chaque fichier js un contexte indépendant... Chaque fichier .js dans Node, en tant que module, est en fait encapsulé avec une fonction. Pour plus de détails, veuillez vous référer au module Node.js que vous devez connaître.
Ajout : j'ai mal compris votre question. La signification des variables globales est "globale". Node l'a, tout comme C/C++. Même Java et C# peuvent implémenter "global" via des membres statiques. La vue d’ensemble en elle-même n’est pas le problème, la question est : avez-vous vraiment besoin d’une vue d’ensemble ?
Chaque
js
文件有独立的module
,仔细看过node
官网的module
部分就能知道,每个模块也就是文件都有自己的全局变量module
,从而能通过module.exports
进行模块导出,每个文件的内容都存在一个闭包中,所以说,所谓的单独上下文其实是有的,看你怎么定义这个单独上下文,如果没有的话,CommonJS
的module
mécanisme cesse d'exister.Le problème est en fait un peu déroutant. En fait, Node donne à chaque fichier js un contexte indépendant, mais cela ne peut éviter une pollution de portée globale. En fait, c'est un compromis pour la fonctionnalité.
Bien sûr, le mode strict peut être utilisé pour éviter la pollution mondiale causée par une négligence temporaire.
C'est fini. Il semble que personne n'ait répondu à cette question. Veuillez la commenter vous-même
.J'ai trouvé une réponse sur Zhihu qui peut presque répondre à cette question. C'est presque la même chose
.Le module n'est-il pas uniquement les versions supérieure et inférieure ?