Node的exports和require的使用
方法1:使用exports.xx来导出
定义one.js
//node的导出用exports.xx和module.exports,导出用require
//导出方法1 exports.xx
var a = 1;
var b = [1,2,3];
var c = {name:'小明'};
var f1=function(){
return '这是f1';
}
exports.a=a;
exports.b=b;
exports.c=c;
exports.f1=f1;
定义main.js
//导入one.js
var one = require('./one');
console.log(one.a);
console.log(one.b);
console.log(one.c);
console.log(one.f1);
在终端执行命令号node main.js,结果如下:
方法2:使用module.exports来导出
定义one.js
//node的导出用exports.xx和module.exports,导出用require
//导出方法2 module.exports
var a = 1;
var b = [1,2,3];
var c = {name:'小明'};
var f1=function(){
return '这是f1';
};
module.exports={
a,
b,
c,
f1
}
定义main.js
//导入one.js
var one = require('./one');
console.log(one.a);
console.log(one.b);
console.log(one.c);
console.log(one.f1);
在终端执行命令号node main.js,结果如下:
由此可见,
共同点:Module.exports和exports.xx都可以导出单个对象。
区别:module.exports适合用于导出多个对象,exports.xx一次只能导出一个对象。一个js里面可多次使用exports.xx,一个js里面只有一个module.exports生效(即只能用一个module.exports).
定义one.js
//node的导出用exports.xx和module.exports,导出用require
//导出方法2 module.exports
var a = 1;
var b = [1,2,3];
module.exports = {a}
定义main.js
//导入one.js
var one = require('./one');
console.log(one.a);
在终端执行命令号node main.js,结果如下:
修改one.js,多次使用module.exports,会发现,最后一个module.exports会覆盖之前的module.exports.
One.js:
//node的导出用exports.xx和module.exports,导出用require
//导出方法2 module.exports
var a = 1;
var b = [1,2,3];
module.exports = {a}
module.exports = {b}
同样,定义main.js
//导入one.js
var one = require('./one');
console.log(one.a);
console.log(one.b);
执行node main.js,效果图:
可见,一个js里面只有一个module.exports生效。
在导入的时候是否需要使用{},这个问题可以看情况而定,记住,导入的是一个对象。
定义one.js
var a = 1;
var b = [1,2,3];
var f1 = function(){
return "这是f1"
}
module.exports={
a,
b,
f1
}
定义main.js
//导入one.js
var {a,b,f1} = require('./one');
console.log(a);
console.log(b);
console.log(f1);
执行node main.js,结果如下图1:
修改main.js
//导入one.js
var one = require('./one');
console.log(one.a);
console.log(one.b);
console.log(one.f1);
结果与图1一样,即在导入的时候看情况决定是否需要用{}。
注意:export和import 是es6的导入导出语法,主要用于导入导出模块。
export直接+变量名的时候,能导出多个命名模块。需要使用{},export对应的是import {name as name1} from ‘one’。
export default{},导出的是一个默认模块。对应的是import a1 from ‘one’,直接import +别名
一个js里面可有多个export,一个js里面只能有一个export default
//export用法
export var a = 1;
//以上相当于
var a = 1;
export {a};
//对应的导入是 import {a as a1} from 'one'
//export default用法
export default {}
//对应的导入是 import a1 from 'one'