javascript - Node.js가 범위 오염을 피하기 위해 각 .js 파일에 별도의 컨텍스트를 제공하지 않는 이유는 무엇입니까?
PHP中文网
PHP中文网 2017-05-16 13:45:41
0
5
1649

cnode 포럼에서 이 질문을 봤습니다:

현재 Node.js는 VM 인터페이스를 노출하므로 프런트엔드 js와는 상당히 다른 새로운 js 컨텍스트를 직접 생성할 수 있습니다. 샌드박스는 새로운 컨텍스트를 생성함으로써 컨텍스트 오염을 피할 수 있습니다.

으아악

새로운 컨텍스트를 통해 오염을 피할 수 있는데 왜 Node.js는 범위 오염을 피하기 위해 각 .js 파일에 독립적인 컨텍스트를 제공하지 않나요?

저는 공부를 정말 못해요. 우선 그가 질문한 내용을 이해하지 못했고, 둘째로 이 문제를 해결하는 방법에 대해 모두가 조언을 해주셨으면 좋겠습니다

.

인용:
https://github.com/ElemeFE/no...

PHP中文网
PHP中文网

认证高级PHP讲师

모든 응답(5)
小葫芦

Node가 각 js 파일에 독립적인 컨텍스트를 제공하지 않는다고 누가 말했습니까... Node의 각 .js 파일은 모듈로서 실제로 함수로 캡슐화되어 있습니다. 자세한 내용은 알아야 할 Node.js 모듈을 참조하세요.

추가: 귀하의 질문을 오해했습니다. 전역 변수의 의미는 "전역"입니다. 노드에는 이것이 있으며 C/C++도 정적 멤버를 통해 "전역"을 구현할 수 있습니다. 큰 그림 자체가 문제가 되는 것은 아닙니다. 문제는 큰 그림이 정말로 필요한가 하는 것입니다.

Ty80

모든 js文件有独立的module,仔细看过node官网的module部分就能知道,每个模块也就是文件都有自己的全局变量module,从而能通过module.exports进行模块导出,每个文件的内容都存在一个闭包中,所以说,所谓的单独上下文其实是有的,看你怎么定义这个单独上下文,如果没有的话,CommonJSmodule 메커니즘은 더 이상 존재하지 않습니다.

世界只因有你

문제는 실제로 약간 혼란스럽습니다. 실제로 Node는 각 js 파일에 독립적인 컨텍스트를 제공하지만 이는 전역 범위 오염을 피할 수 없습니다.

물론, 일시적인 부주의로 인한 지구 오염을 방지하기 위해 엄격 모드를 사용할 수도 있습니다.

Ty80

이 질문에 아무도 답변하지 않은 것 같습니다. 직접 댓글을 달아주세요.

이 질문에 거의 답할 수 있는 답변을 Zhihu에서 찾았습니다. 거의 같은 느낌이에요

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

刘奇

모듈은 상위버전과 하위버전만 있는거 아닌가요?

최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿