export和exportdefault的区别
export命令⽤于规定模块的对外接⼝。
⼀个模块就是⼀个独⽴的⽂件。该⽂件内部的所有变量,外部⽆法获取。如果你希望外部能够读取模块内部的某个变量,就必须使⽤export关
键字输出该变量。下⾯是⼀个JS⽂件,⾥⾯使⽤export命令输出变量。
//
exportvarfirstName='Michael';
exportvarlastName='Jackson';
exportvaryear=1958;
上⾯代码是⽂件,保存了⽤户信息。ES6将其视为⼀个模块,⾥⾯⽤export命令对外部输出了三个变量。
export的写法,除了像上⾯这样,还有另外⼀种。
//
varfirstName='Michael';
varlastName='Jackson';
varyear=1958;
export{firstName,lastName,year};
上⾯代码在export命令后⾯,使⽤⼤括号指定所要输出的⼀组变量。它与前⼀种写法(直接放置在var语句前)是等价的,但是应该优先考虑
使⽤这种写法。因为这样就可以在脚本尾部,⼀眼看清楚输出了哪些变量。
export命令除了输出变量,还可以输出函数或类(class)。
exportfunctionmultiply(x,y){
returnx*y;
};
上⾯代码对外输出⼀个函数multiply。
export命令对外输出了指定名字的变量(变量也可以是函数或类)。
与exportdefault命令的区别:import命令接受⼀对⼤括号,⾥⾯指定要从其他模块导⼊的变量名。⼤括号⾥⾯的变量名,必须与被导⼊模块
()对外接⼝的名称相同。
如果想为输⼊的变量重新取⼀个名字,import命令要使⽤as关键字,将输⼊的变量重命名。
import{lastNameassurname}from'./';
exportdefault命令,为模块指定默认输出。
使⽤import命令的时候,⽤户需要知道所要加载的变量名或函数名,否则⽆法加载。但是,⽤户肯定希望快速上⼿,未必愿意阅读⽂档,去了解模块有哪些属性
和⽅法。
为了给⽤户提供⽅便,让他们不⽤阅读⽂档就能加载模块,就要⽤到exportdefault命令,为模块指定默认输出。
//
exportdefaultfunction(){
('foo');
}
上⾯代码是⼀个模块⽂件,它的默认输出是⼀个函数。
与export命令的区别:其他模块加载该模块时,import命令可以为该匿名函数指定任意名字。
//
importcustomNamefrom'./export-default';
customName();//'foo'
上⾯代码的import命令,可以⽤任意名称指向输出的⽅法,这时就不需要知道原模块输出的函数名。需要注意的是,这
时import命令后⾯,不使⽤⼤括号。
本质上,exportdefault就是输出⼀个叫做default的变量或⽅法,然后系统允许你为它取任意名字。所以,下⾯的写法是有效的。
//
functionadd(x,y){
returnx*y;
}
export{addasdefault};
//等同于
//exportdefaultadd;
//
import{defaultasfoo}from'modules';
//等同于
//importfoofrom'modules';
正是因为exportdefault命令其实只是输出⼀个叫做default的变量,所以它后⾯不能跟变量声明语句。
总结:export命令对外接⼝是有名称的且import命令从模块导⼊的变量名与被导⼊模块对外接⼝的名称相同,⽽exportdefault命令对外输出
的变量名可以是任意的,这时import命令后⾯,不使⽤⼤括号。
exportdefault命令⽤于指定模块的默认输出。显然,⼀个模块只能有⼀个默认输出,因此exportdefault命令只能使⽤⼀次。所以,import命令后
⾯才不⽤加⼤括号,因为只可能唯⼀对应exportdefault命令。
本文发布于:2022-11-25 15:16:56,感谢您对本站的认可!
本文链接:http://www.wtabcd.cn/fanwen/fan/90/19249.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
留言与评论(共有 0 条评论) |