一、概述
先看一段
代码
:
// index.js
import createMathOperation from './.internal/createMathOperation.js'
const add = createMathOperation((augend, addend) => augend + addend, 0)
console.log(add(6, 4));
export default add
当我们在终端执行
node index.js
时,我们可以得到一个报错:
也就是说,我们不可以直接运行这段包含
ESM
的代码。
Node verison 13.2.0
起开始正式支持
ES Modules
特性,有两种方法可以应用:
-
在
package.json
中设置
"type": "module"
-
将文件后缀改变为
mjs
第一种方法使用过
single-spa
的同学应该觉得眼熟,
single-spa
采用第一个方法导入子模块。
根据第二个方法,为了便利化
调试
,我开发了一个命令行工具——
uunode
,它会将
js
文件在不覆盖原文件的情况下转化为
mjs
, 并执行相应的
mjs
文件,并返回结果。
二、安装
npm
使用:
npm install uunode -g
yarn
使用:
yarn add uunode -g
(
linux
显示没有权限的话请在前面加上 sudo, 即
sudo npm install uunode -g
或者
sudo yarn add uunode -g
)
三、使用示例
uunode [example.js]
如示例所示,当我们运行
uunode [example.js]
时,它会产生一个
.uunode
的文件夹,里面储存着将
mjs
文件(默认不保留文件,你可以加
-k
参数保留文件)。并执行
node .uunode/example.js
返回相应的结果。
你还可以使用
uunode [example.js] -s
去掉
console
。
参数支持项:
参数值 | 含义 |
---|---|
-s |
去除
|
-k | 保留生产后的菜单 |
四、未来
在探索如何写
uunode
的过程中发现了
Deno
,也是由
nodejs
的作者
Ryan Dahl
开发的。
node
不能处理
ESM
模块的问题,将在
Deno
解决。更多关于 deno 的内容,请参考
这篇
文章。
五、更多