我们知道node中用来进行模块导入导出的是module.exports和require, 而es6中,用来进行模块导入导出的是import和export,这个时候就会有个疑问,为啥一个是exports,一个是export呢,两者有何区别呢?
1.node-module.export和require
暂时摘抄某个网站的下列知识点,其余的再补充
module.exports 初始值为一个空对象 {}
exports 是指向的 module.exports 的引用
require() 返回的是 module.exports 而不是 exports
2.es6-export和import
一般来说,我们会导出一个或者多个变量,变量可能是数组、对象、函数等。这个时候有2种写法,一种是利用export,另一种是export default
export的情况(命名导出)
function getA () {
console.log("getA");
}
function getB () {
console.log("getB");
}
export { getA, getB }
一个文件里可以有多个export,上述代码等价于以下代码
export getA () {
console.log('getA')
}
export getB () {
console.log('getB')
}
用export时,这个对象的名称已经确定(getA、getB),在用import引入的时候必须用(getA、getB)这些名称,同时,名称前后要加{}。上述2种导出方式可以用下述方式导入
import { getA, getB } from './testExport.js';
当然你可以在导出变量的时候,给它起一个其他的名字,例如
var a = function(){
console.log("ddd");
};
export {a as b};
这个时候相应的引入方式为:
import {b} from './testExport.js';
有一点注意的是,如果仍旧利用
import {a} from './testExport.js';
的形式是失效的,因为这个时候a模块已经叫做b了,只有b是可用的。
export default 的情况(默认导出)
如果你在一个文件中,只是想导出一个模块的化,那么利用export default比较方便些,这样就省去了繁琐的大括号{}。一个文件里只能有一个export default
例如:
export default {
getA () {
console.log('getA')
},
getB () {
console.log('getB')
}
}
default的意思是默认导出一个无命名的模块,这样的话,在引入模块的时候可以对这个模块随意命名。
例如:
import test from './testExport.js';
test.getA()
test.getB()
本文详细介绍了Node.js中的module.exports与require机制,并对比了ES6中的export和import用法,包括命名导出和默认导出的方式及其使用场景。
1408

被折叠的 条评论
为什么被折叠?



