javascript - Pourquoi Node.js ne donne-t-il pas à chaque fichier .js un contexte distinct pour éviter toute pollution de portée?
PHP中文网
PHP中文网 2017-05-16 13:45:41
0
5
1659

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 ?

Je ne suis vraiment pas doué pour apprendre. Premièrement, je n'ai pas compris ce qu'il a demandé, et deuxièmement, comment résoudre ce problème. J'espère que vous me donnerez tous des conseils, je vous en suis reconnaissant. mes genoux

Cité de :
https://github.com/ElemeFE/no...

PHP中文网
PHP中文网

认证高级PHP讲师

répondre à tous(5)
小葫芦

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 ?

Ty80

Chaque js文件有独立的module,仔细看过node官网的module部分就能知道,每个模块也就是文件都有自己的全局变量module,从而能通过module.exports进行模块导出,每个文件的内容都存在一个闭包中,所以说,所谓的单独上下文其实是有的,看你怎么定义这个单独上下文,如果没有的话,CommonJSmodule 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.

Ty80

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

.

https://www.zhihu.com/questio...

刘奇

Le module n'est-il pas uniquement les versions supérieure et inférieure ?

Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal