本文共 1241 字,大约阅读时间需要 4 分钟。
编写此篇总结时使用的node版本:v14.16.1
CommonJS是目前node默认的模块规范,CommonJS不支持导入导出多个模块
module_a.js
module.exports = { name: 'module_a', print: (content) => { console.log(content) }}
module_b.js
// 引入module_a.jsconst moduleA = require('./module_a.js')moduleA.print(moduleA.name)
ES6模块规范支持导入导出多个模块
目前node并未默认支持ES6的模块规范,所以需要手动开启支持,开启ES6模块规范支持有两种方式
使用.mjs后缀,node会按照ES6的模块规范来检查该文件,此种方式看似比较灵活,不过ES6和CommonJS模块文件之间互相引用会有问题
在package.json配置中增加type: “module”,则整个工程的文件均会按照ES6模块规范进行检查
module_a.mjs
// 输出单个默认模块export default { name: 'module_a', print: (content) => { console.log(content) }}
module_b.mjs
// 导入export default输出的模块,可自定义名称import moduleA from './module_a.mjs'moduleA.print(moduleA.name)
module_a.mjs
const moduleA1 = { name: 'module_a_1', print: (content) => { console.log(content) }}const moduleA2 = { name: 'module_a_2', print: (content) => { console.log(content) }}// ES6可输出多个模块,可使用as关键字自定义名称export { moduleA1, moduleA2}
module_b.mjs
// 导入export {}输出的多个模块,可使用as关键字自定义名称import { moduleA1 as a1, moduleA2} from './module_a.mjs'a1.print(a1.name)moduleA2.print(moduleA2.name)
转载地址:http://bvtlf.baihongyu.com/