node中的module.exports、exports VS es6中的import、export

来源:互联网 发布:豆瓣python 编辑:程序博客网 时间:2024/06/03 06:15

我们知道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的情况

var a = function(){    console.log("ddd");};export {a};
用export时,必须在导出的变量前后加上{},表示要导出的对象集合,同时,这个对象的名称已经确定,就是a,在用import引入的时候必须用a这个名称,同时,名称前后要加{}。

import {a} 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比较方便些,这样就省去了繁琐的大括号{}。

例如:

var a = function(){    console.log("ddd");};export default a;

default的意思是默认导出一个无命名的模块,这样的话,在引入模块的时候可以对这个模块随意命名。

例如:

import b from './testExport.js';