node 的 es 模块标准 .mjs

2,606 阅读1分钟
  1. 目前 es 模块化 仍然处于试验阶段
  2. 模块要么是commonjs(函数环境) 或者 es (webpack 将所有的都转为 函数环境)
    1. 默认情况下为 commonjs
    2. 想在node里面使用 es
      • 单文件 可以将文件后缀改为.mjs
      • 全局在 packjson 里面 type 写为module
  3. 当使用es模块化时要加上 --experimental-modules 实验性质的
    • 如果要 运行的话需要写上全名 例如运行index.mjs node --experimental-modules index.mjs

commonjs 和 es 可以互相调用,但是不建议项目两种互用 当在es 导出commonjs 会将所有导出放在default

// a.js
module.exports.default = 100
module.exports.a = 1
// index.mjs
import * as obj from './a.js' // 输出{a: 1,default: { default: 100, a: 1 }}
import obj2 from './a.js'   // 输出  { default: 100, a: 1 }

error  import { a } from './a.js'  会失败
error 反过来 a.js coomonjs 调用 index.msj es 会报错

console.log(obj,obj2)