cari

Rumah  >  Soal Jawab  >  teks badan

javascript - Mengapa Node.js tidak memberikan setiap fail .js konteks yang berasingan untuk mengelakkan pencemaran skop?

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?

Saya memang tidak pandai belajar Pertama sekali, saya tidak faham apa yang dia tanya, dan kedua, bagaimana untuk menyelesaikan masalah ini saya harap anda semua akan memberi saya nasihat lutut saya

Dipetik daripada:
https://github.com/ElemeFE/no...

PHP中文网PHP中文网2748 hari yang lalu1615

membalas semua(5)saya akan balas

  • 高洛峰

    高洛峰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?

    balas
    0
  • PHP中文网

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

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

    balas
    0
  • 世界只因有你

    世界只因有你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.

    balas
    0
  • PHP中文网

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

    balas
    0
  • 怪我咯

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

    Bukankah modul hanya versi atas dan bawah?

    balas
    0
  • Batalbalas