博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
nodejs的模块化
阅读量:2058 次
发布时间:2019-04-29

本文共 1241 字,大约阅读时间需要 4 分钟。

编写此篇总结时使用的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.jsconst 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)

转载地址:http://bvtlf.baihongyu.com/

你可能感兴趣的文章
剑指offer 26. 数组中出现次数超过一半的数字
查看>>
剑指offer 27.二叉树的深度
查看>>
剑指offer 29.字符串的排列
查看>>
剑指offer 31.最小的k个树
查看>>
剑指offer 32.整数中1出现的次数
查看>>
剑指offer 33.第一个只出现一次的字符
查看>>
剑指offer 34.把数组排成最小的数
查看>>
剑指offer 35.数组中只出现一次的数字
查看>>
剑指offer 36.数字在排序数组中出现的次数
查看>>
剑指offer 37.数组中重复的数字
查看>>
剑指offer 38.丑数
查看>>
剑指offer 39.构建乘积数组
查看>>
剑指offer 57. 删除链表中重复的结点
查看>>
剑指offer 58. 链表中环的入口结点
查看>>
剑指offer 59. 把字符串转换成整数
查看>>
剑指offer 60. 不用加减乘除做加法
查看>>
leetcode 热题 Hot 100-3. 合并两个有序链表
查看>>
leetcode 热题 Hot 100-4. 对称二叉树
查看>>
Leetcode C++《热题 Hot 100-12》226.翻转二叉树
查看>>
Leetcode C++《热题 Hot 100-13》234.回文链表
查看>>