大多数前端开发人员长期以来都喜欢使用 ES 模块(或 ECMAScript 模块),而后端如Node.js中,大多数开发人员仍然使用 CommonJS,因为它仍然是导入模块的标准方式。

从 8.9.0 版本开始,您可以通过添加 --experimental-modules 标志开始使用 ES 模块,但现在已经不需要了,自从 Node 版本 13 以来,你只需要做一些小的设置,就可以正常地使用它。现在我们来看看具体步骤:

node.js使用场景(Web-Node.JS中如何使用ES)(1)

项目初始化

我们来建立一个小型express服务器来说明这一切。第一步新建一个文件夹,名字可以任意,进入到文件夹中执行 npm init -y 来初始化package.json的设置。这里面的一切目前都不重要,保留默认值就行。接着我们来安装项目唯一的依赖 npm i express,这个是我们搭建服务器必须的package。

node.js使用场景(Web-Node.JS中如何使用ES)(2)

MJS文件

现在,我们来创建一个server.mjs文件,这是新的官方文件扩展名,它也告诉 Node 你将使用一个新的 ES 模块。为这个文件添加一些代码:

node.js使用场景(Web-Node.JS中如何使用ES)(3)

这就是启动一个默认端口号为5555的简易web服务器,里面有一个路由,它会返回一个字符串。以下是现在的文件目录

node.js使用场景(Web-Node.JS中如何使用ES)(4)

现在我们通过命令node server.mjs来运行它,

node.js使用场景(Web-Node.JS中如何使用ES)(5)

可以看到,一切正常,访问一下 http://localhost:5555 试试:

node.js使用场景(Web-Node.JS中如何使用ES)(6)

没有任何问题。

type="module"

很多朋友不喜欢MJS文件,总感觉怪怪的,而且许多跟JS相关的设置,需要对MJS再设置一遍,比如linter, formatter之类的。。。有没有办法直接只用JS文件呢?当然是有的,现在我们就将文件扩展名改为JS试试,

node.js使用场景(Web-Node.JS中如何使用ES)(7)

再试着运行则直接报错了,

node.js使用场景(Web-Node.JS中如何使用ES)(8)

但它也有提示,需要在package.json中加入type=module,这样就可以告诉Node.js要以ESM的方式来运行这个package中的JS文件。

node.js使用场景(Web-Node.JS中如何使用ES)(9)

再来运行这个JS文件,

node.js使用场景(Web-Node.JS中如何使用ES)(10)

这次成功了,访问http://localhost:5555也一切正常。

node.js使用场景(Web-Node.JS中如何使用ES)(11)

现在越来越多的package开始迁移到ESM了,也许你可以考虑在新的项目中使用它了。

,