Maison  >  Questions et réponses  >  le corps du texte

javascript - Pourquoi Node.js ne donne-t-il pas à chaque fichier .js un contexte distinct pour éviter toute pollution de portée?

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中文网2713 Il y a quelques jours1594

répondre à tous(5)je répondrai

  • 高洛峰

    高洛峰2017-05-16 13:47:41

    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 ?

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:47:41

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

    répondre
    0
  • 世界只因有你

    世界只因有你2017-05-16 13:47:41

    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.

    répondre
    0
  • PHP中文网

    PHP中文网2017-05-16 13:47:41

    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...

    répondre
    0
  • 怪我咯

    怪我咯2017-05-16 13:47:41

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

    répondre
    0
  • Annulerrépondre