Node.js模块化导入导出
nodejs模块化导入导出
module.exports导入导出
方式一:
//导出
module.exports.a = 'hello';
module.exports.add = function () {
console.log('add');
}
//导入
let test = require('./a.js')
console.log(test);//{ a: 'hello', add: [Function] }
方式二:
如果使用 module.exports = xxx
只能导出单个成员
//导出
module.exports = 'hello';
//导入
let test = require('./a.js')
console.log(test);//hello
//导出
module.exports = 'hello';
//后者会覆盖前者
module.exports = function () {
console.log('add');
}
//导入
let test = require('./a.js')
console.log(test);//[Function]
exports导入导出
exports 默认和 module.exports 指向同一个引用
//导出
exports.a = "hello";
exports.add = function () {
console.log("add");
}
//导入
let test = require('./a.js')
console.log(test);//{ a: 'hello', add: [Function] }
exports 不能使用 exports = xxx 导出成员,
会改变 exports 的指向
//导出
exports = 'hello';
//导入
let test = require('./a.js')
console.log(test);
//{} 结果是是一个空对象
es6 模块化导入导出
按需导出
向外导出: export var a = 10 【按需导出】
向外导出: export var b = 20 【按需导出】
对应的导入方式: import { a, b as vb } from ‘模块路径’ 【按需导入】
用 as 可以重新命名
//导出
export let a = 1;
export let b = new Date();
export let c = [1,2,3];
export let say = function (){
console.log("嘿嘿嘿")
}
//重命名导出
export {a as a1,b as b1,c as c1,say as s1};
//导入时也要用改过的名字
import {a1,b1,c1,s1} from "./es6-export.js";
console.log(a1,b1,c1,s1);
s1();
默认导出
向外导出: export default (可跟对象,数组,函数等) 【默认导出】
对应的导入方式: import 名称 from ‘模块路径’ 【默认导入】
//导出
export default function (){
console.log("哈哈哈")
};
//导入
import data from "./es6-export.js";
data();
console.log(data);
也可以用 * 来导入所有成员
import * as e from "./es6-export.js";
console.log(e);
注意
1、export default 向外暴露的成员,可以使用任意变量来接收
2、在一个模块中,export default 只允许向外暴露一次
3、在一个模块中,可以同时使用export default 和export 向外暴露成员
4、使用export向外暴露的成员,只能使用{ }的形式来接收,这种形式,叫做【按需导出】
5、export可以向外暴露多个成员,同时,如果某些成员,在import导入时,不需要,可以不在{ }中定义
6、使用export导出的成员,必须严格按照导出时候的名称,来使用{ }按需接收
7、使用export导出的成员,如果想换个变量名称接收,可以使用as来起别名