nodejs的模块化

编写此篇总结时使用的node版本:v14.16.1

CommonJS模块规范

CommonJS是目前node默认的模块规范,CommonJS不支持导入导出多个模块

Example

module_a.js

module.exports = {
    name: 'module_a',
    print: (content) => {
        console.log(content)
    }
}

module_b.js

// 引入module_a.js
const moduleA = require('./module_a.js')

moduleA.print(moduleA.name)

ES6模块规范

ES6模块规范支持导入导出多个模块

开启支持

目前node并未默认支持ES6的模块规范,所以需要手动开启支持,开启ES6模块规范支持有两种方式

1、使用.mjs后缀

使用.mjs后缀,node会按照ES6的模块规范来检查该文件,此种方式看似比较灵活,不过ES6和CommonJS模块文件之间互相引用会有问题

2、调整配置

在package.json配置中增加type: “module”,则整个工程的文件均会按照ES6模块规范进行检查

Example

1、导入导出单个默认模块

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)

2、导入导出多个模块

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)
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值