一、JS 中的 export
在 JavaScript ES6 中,export 与 export default 均可用于导出常量、函数、文件、模块等。
export、export default 负责 导出,import 则负责导入。
export 在一个js文件中可以有多个,export default 最多只能有一个。
export 可以和 export default 混用。
1、export
1.1 导出声明
const aa = "aa";
function test() {console.log("test");
}
export { aa, test };
1.2 直接导出
export const aa = "aa";
export function test() {console.log("test");
}
1.3 混用
const aa = "aa";
export { aa };
export function test() {console.log("test");
}
1.4 导出时取别名
const aa = "aa";
function test() {console.log("test");
}
export { aa as a1, test };
1.5 导入
// 方式一:解构导入
import { aa, test } from './module.js'
// 方式二:导入时取别名
import { aa as a1, test } from './module.js'
// 方式三、全部导入
import * as modul from './module.js'
2、export default
2.1 导出声明
const aa = 'aa';
export default aa
2.2 导出对象
const aa = 'aa';
const bb = 'bb';
function test() {console.log('test')
}
export default { aa, bb, test: test() }
2.3 导出函数
const aa = 'aa';
export default function test() {console.log(aa)
}
2.4 导出类
export default class {constructor(value) {this.value = value}test(type) {console.log(value, type)}
}
2.5 导入
import modul from './module.js'// 正常使用
console.log(modul)
// 导出 class 类使用
const class_method = new modul('static')
class_method.test('test')
参考
export、export default和import用法详解_export default import-CSDN博客
二、Node 中的 exports
1、module
在每个自定义模块js中都有一个module 对象,它里面存储了和当前模块有关的信息。
// test.js
console.log(module)
node test.js
输出如下 :
Module {id: 'F:\\server\\utils\\test.js',path: 'F:\\server\\utils',exports: {},filename: 'F:\\server\\utils\\test.js',loaded: false,children: [],paths: ['F:\\server\\utils\\node_modules','F:\\server\\node_modules','F:\\node_modules',]
}
2、module.exports
在自定义模块中,可以使用
module.exports
对象,将模块内成员共享出去,供外界使用;外界使用require()
方法导入自定义模块时,得到的是module.exports
所指的对象;在一个自定义模块中,默认
module.exports = {}
2.1 导出方式一
module.exports.aa = 'aa'
2.2 导出方式二
module.exports = {aa: 'aa',test: () => {console.log('test')}
}
2.3 导入
// 方式一:直接导入
const modul = require('./modul.js')
// 方式二:解构导入
const { aa } = require('./modul.js')
3、exports
由于
module.exports
单词写起来比较复杂,为了简化,Node
提供了exports
对象。默认情况下module.exports
和exports
指向同一个对象
3.1 导出
exports.aa = 'aa'
exports.test = () => {console.log('test')
}
3.2 导入
// 方式一:直接导入
const modul = require('./modul.js')
// 方式二:解构导入
const { aa, test } = require('./modul.js')
3.3 错误写法
exports = {aa: 'aa'
}
注意
require() 模块时,得到的永远是 module.exports 指向的对象。
示例
导出
exports.aa = 'aa'module.exports = {bb: 'bb'
}exports.cc = 'cc'
导入
const modul = require('./modul.js')
console.log(modul)
输出
{ bb: 'bb' }
参考
Node.js 模块化 module.exports 和 exports 的使用-CSDN博客
三、实用
导入模块时可以省略 .js 后缀
const modul = require('./modul')