一、概述
   
    先看一段
    
     代码
    
    :
   
// 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 的内容,请参考
    
     这篇
    
    文章。
   
    
    
    五、更多
   
 
