javascript - Mengapa Node.js tidak memberikan setiap fail .js konteks yang berasingan untuk mengelakkan pencemaran skop?
PHP中文网
PHP中文网 2017-05-16 13:45:41
0
5
1571

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中文网

认证高级PHP讲师

membalas semua(5)
小葫芦

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?

Ty80

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

世界只因有你

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.

Ty80

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

刘奇

Bukankah modul hanya versi atas dan bawah?

Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan
Tentang kita Penafian Sitemap
Laman web PHP Cina:Latihan PHP dalam talian kebajikan awam,Bantu pelajar PHP berkembang dengan cepat!