当前位置: 首页 > 后端技术 > Node.js

Node.js中ES模块的状态

时间:2023-04-03 20:48:26 Node.js

作者:TobiasNie?en组成程序的代码被拆分成多个文件。在C和C++中,#include指令用于此目的,而Java和Python具有import关键字。JavaScript是迄今为止为数不多的例外之一,但新的JavaScript标准(ECMAScript6)通过引入所谓的ECMAScript模块改变了这一点。所有主流浏览器都支持这个新标准——只有Node.js似乎落后了。这是为什么?新的ECMAScript(ES)模块与以前的语言版本不完全兼容,因此使用的JavaScript引擎需要知道每个文件是“旧”JavaScript代码还是“新”模块。许多程序员首选的严格模式(例如在ECMAScript5中引入)过去是可选的并且必须显式启用,而它在ES模块中始终处于活动状态。因此,以下代码片段在语法上可以解释为传统的JavaScript代码和ES模块:a=5;作为一个经典的Node.js模块,这相当于global.a=5,由于变量a没有被声明并且没有激活strict显式模式,所以a被当作一个全局变量。如果你尝试加载与ES模块相同的文件,你将得到错误“ReferenceError:aisnotdefined”,因为未声明的变量在严格模式下可能不可用。浏览器通过对