目录

​CommonJS模块化规范​

​方式一【适用于模块只对外输出一个方法】​

​方式二【适用于模块对外输出多个方法】​

​ES6模块化规范​

​node.js支持ES6模块化规范的方法​

​方法一:将文件后缀名修改为.mjs​

​方法二:在package.json文件中,指定type字段为module​

​方法三:安装babel​


JavaScript 有两种模块化规范:

  1. CommonJS模块化规范——使用require()导入模块,module.exports导出模块
  2. ES6模块化规范——使用import导入模块,export 导出模块

两种模块化规范不兼容!(两种语法不能在同一个文件中使用,除非用babel转义)

CommonJS模块化规范

方式一【适用于模块只对外输出一个方法】

导出模块

//a.js

function log(str){
console.log(str);
}

module.exports = log

导入模块

//index.js

const log= require('./a.js');
log('你好');//打印 '你好'

require的加载过程图解

node.js 导入导出模块(CommonJS模块化规范,ES6模块化规范)_js模块化

方式二【适用于模块对外输出多个方法】

导出模块 

//a.js

module.exports.log = function(str){
console.log(str);
}

导入模块

//index.js

const logModule = require('./a.js');
logModule.log('你好');//打印 '你好'

ES6模块化规范

导出模块

// a.js

export function log(str) {
console.log(str)
}

导入模块

// b.js

import { log } from './a.js'

log('你好')

node.js支持ES6模块化规范的方法

nodejs 默认使用CommonJS模块化规范,若想使用ES6模块化规范,有以下方法:

方法一:将文件后缀名修改为.mjs

 node.js对​​.mjs​​文件总是使用 ES6 模块化规范,运行文件时,使用  node  test.mjs

方法二:在​​package.json​​​文件中,指定​​type​​​字段为​​module​

若项目中没有​​package.json​​​文件,则在项目文件夹下新建​​package.json文件​

{
"type": "module"
}

使用此方法后,所有CommonJS模块化规范的js文件的后缀名需改为​​.cjs​

方法三:安装babel

使用babel将js文件编译成node.js支持的commonjs格式的代码。

安装依赖

npm i babel-register babel-preset-env -D

 项目目录下新建babel的配置文件 .babelrc

{
"plugins": [
"transform-es2015-modules-commonjs"
]
}

在项目启动文件中,引入babel

require('babel-register')

完整范例代码

目录结构

│  .babelrc
│ package.json

└─src
a.js
index.js
print.js

index.js

require('babel-register')
require('./print')

print.js

import a from './a'

a.js

console.log('aaa')

运行index.js

node index.js