Node.js 4.0脚本不是模块吗?

时间:2015-09-16 23:45:44

标签: javascript node.js module ecmascript-6

在Node 4.0中,当您从命令行执行脚本时,脚本将被包装(在函数中),使this不引用全局对象。

[~]$ cat global.js
console.log(this===global);
[~]$ node -v
v4.0.0
[~]$ node global.js 
false

足够公平。事实上,有很多StackOverflow问题解决了这个问题。这是完全有道理的,也是正确的。

我做的期待的是:

[~]$ cat x.js
let x=10;
[~]$ node x.js
(function (exports, require, module, __filename, __dirname) { let x=10;
                                                          ^^^

ES2015 Spec中它表示"模块代码始终是严格的模式代码。"

我是否理解Node.js作为脚本执行的代码不是"模块"?如果它不是模块,它是什么?如何区分模块代码和非模块代码?或者Node是否仍然符合标准?标准的第15节(" Scripts and Modules")要么不清楚脚本和模块之间的区别,要么我错过了一些非常明显的东西。

只是一个"模块"进口时? (就像在ruby中使用$0__FILE__以及在Python中使用__name__"__main__"的方式一样?)似乎总是必须使用"use strict"在脚本中。

0 个答案:

没有答案