import和export的作⽤
在es6标准发布之前,js是没有模块化的概念的,也就是说原⽣js是⽆法将⼀个⼤型程序拆分成若⼲相互依赖的⼩模块的。⽽es6针对这个问题提出了Module的概念,设计思想是尽量的静态化,使得编译时就能确定模块的依赖关系,以及输⼊和输出的变量。
关于静态化是指直接从指定模块取出想要的⽅法,其他的不加载。⽐如
此时只加载fs中的stat、exists和readFile三个模块,其他的不加载。⽽⽐如CommonJS和 AMD 模块,都只能在运⾏时确定这些东西。也就是先加载整个fs,然后再从中到想要的模块。
Module模块功能主要由两个命令构成:import 和 export。
export⽤于对外输出本模块(⼀个⽂件可以理解为⼀个模块)变量的接⼝,可以使⽤as对要输出的变量进⾏重命名。
import⽤于在⼀个模块中加载另⼀个含有export接⼝的模块,可以使⽤as对引⼊的变量进⾏重命名。import命令具有提升效果,会提升到整个模块的头部,⾸先执⾏。如果多次重复执⾏同⼀句import语句,那么只会执⾏⼀次,⽽不会执⾏多次。
也就是说使⽤export命令定义了模块的对外接⼝以后,其他JS⽂件就可以通过import命令加载这个模块(⽂件)。
export 和 export default 异同:
1、⼆者均⽤于导出常量、函数、⽂件、模块等;
2、你可以在其它⽂件或模块中通过import+(常量 | 函数 | ⽂件 | 模块)名的⽅式,将其导⼊,以便能够对其进⾏使⽤;
import语句3、在⼀个⽂件或模块中,export、import可以有多个,export default仅有⼀个;
4、通过export⽅式导出,在导⼊时要加{ },export default则不需要。
5、在⽤import引⼊时,如果是⽤export⽅法定义的导出,必须要知道指定的变量名。⽽如果使⽤export default定义的时候,import可以起任意的名字,这⾥可以理解为,⽤export default声明导出模块时,⾃动⽣成了⼀个叫default的变量,当使⽤import命令导⼊时,会⾃动将这个defualt变量赋值给声明的变量中。这也就解释了为什么export default仅有⼀个。注:export default命令其实只是输出⼀个叫做default的变量,所以它后⾯不能跟变量声明语句.
import和export的复合写法:
如果在⼀个模块之中,先输⼊后输出同⼀个模块,import语句可以与export语句写在⼀起。
上⾯代码中,export和import语句可以结合在⼀起,写成⼀⾏。但需要注意的是,写成⼀⾏以后,foo和bar实际上并没有被导⼊当前模块,只是相当于对外转发了这两个接⼝,导致当前模块不能直接使⽤foo和bar。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论