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