大多数前端开发人员长期以来都喜欢使用 ES 模块(或 ECMAScript 模块),而后端如Node.js中,大多数开发人员仍然使用 CommonJS,因为它仍然是导入模块的标准方式。
从 8.9.0 版本开始,您可以通过添加 --experimental-modules 标志开始使用 ES 模块,但现在已经不需要了,自从 Node 版本 13 以来,你只需要做一些小的设置,就可以正常地使用它。现在我们来看看具体步骤:
项目初始化
我们来建立一个小型express服务器来说明这一切。第一步新建一个文件夹,名字可以任意,进入到文件夹中执行 npm init -y 来初始化package.json的设置。这里面的一切目前都不重要,保留默认值就行。接着我们来安装项目唯一的依赖 npm i express,这个是我们搭建服务器必须的package。
MJS文件
现在,我们来创建一个server.mjs文件,这是新的官方文件扩展名,它也告诉 Node 你将使用一个新的 ES 模块。为这个文件添加一些代码:
这就是启动一个默认端口号为5555的简易web服务器,里面有一个路由,它会返回一个字符串。以下是现在的文件目录
现在我们通过命令node server.mjs来运行它,
可以看到,一切正常,访问一下 http://localhost:5555 试试:
没有任何问题。
type="module"
很多朋友不喜欢MJS文件,总感觉怪怪的,而且许多跟JS相关的设置,需要对MJS再设置一遍,比如linter, formatter之类的。。。有没有办法直接只用JS文件呢?当然是有的,现在我们就将文件扩展名改为JS试试,
再试着运行则直接报错了,
但它也有提示,需要在package.json中加入type=module,这样就可以告诉Node.js要以ESM的方式来运行这个package中的JS文件。
再来运行这个JS文件,
这次成功了,访问http://localhost:5555也一切正常。
现在越来越多的package开始迁移到ESM了,也许你可以考虑在新的项目中使用它了。
,