ES6export在ES6中一般有两种用法命名导出默认导出命名导出是指每个需要导出的数据类型都必须有一个名字,统一输入必须有{},甚至如果只有一种数据类型需要输出。这种文风清爽直观,是推荐的文法。//------lib.js------constsqrt=Math.sqrt;functionsquare(x){returnx*x;}functiondiag(x,y){returnsqrt(square(x)+square(y));}export{sqrt,square,diag}//------main.js------import{square,diag}from'lib';控制台日志(方形(11));//121console.log(诊断(4,3));//5可以省略{},直接在语句前加上export//------lib.js------exportconstsqrt=Math.平方根;exportfunctionsquare(x){returnx*x;}exportfunctiondiag(x,y){returnsqrt(square(x)+square(y));}//------main.js------从'lib'导入{square,diag};控制台日志(方形(11));//121console.log(诊断(4,3));//5不管怎么输出,输入的时候都需要{}。别名命名导入(Aliasingnamedimports)import{speak}from'./cow.js'import{speak}from'./goat.js'当从不同模块导入的变量名相同时。这些写法显然会造成混淆。正确的方法是这样的import{speakascowSpeak}from'./cow.js'import{speakasgoatSpeak}from'./goat.js'但是,当每个模块需要导入的方法很多时,这种写法非常繁琐和冗长,例如import{speakascowSpeak,eatascowEat,drinkascowDrink}from'./cow.js'import{speakasgoatSpeak,eatasgoatEat,drinkasgoatDrink}from'./goat.js'cowSpeak()//moocowEat()//coweatsgoatSpeak()//baagoatDrink()//goatdrinks解决方案是导入命名空间导入(Namespaceimports)import*ascowfrom'./奶牛。js'import*asgoatfrom'./goat.js'cow.speak()//moogoat.speak()//baa非常简洁优雅。默认导出(Defaultexports)默认不需要名字,但是一个js文件中只能有一个exportdefault。//------myFunc.js------exportdefaultfunction(){...};//------main1.js------importmyFuncfrom'myFunc';myFunc();其实这个导出方式可以看成是namedexport的变种,只是名字写成默认。虽然默认导出只能有一个,但是也可以导出多个方法。exportdefault{speak(){return'moo'},eat(){return'coweats'},drink(){return'cowdrinks'}}import类似于namespaceimportimportcowfrom'./default-cow.js'importgoatfrom'./default-goat.js'cow.speak()//moogoat.speak()//baa如果我们在编写模块时使用的输出方式不统一,那么我们在导入时需要考虑输入不同模块的方式。这种麻烦可以通过自我引用来消除。方法如下写一个两个输入法通用的模块import*asmyselffrom'./ambidextrous-cow.js'//把这个文件导入自己//这个模块自己的命名空间是它默认的exportexportdefaultmyselfexportfunctionspeak(){安慰。log('moo')}这样输入的时候就不用考虑输入法了。importcowfrom'./ambidextrous-cow'import*asalsocowfrom'./ambidextrous-cow'cow.speak()//mooalsocow.speak()//moo两种输入法都可用。这种方法也有一个小缺点,就是在我们写的模块中,有一个常用的函数,我们想默认导出,但是exportdefault已经用过了,我们知道exportdefault可以只能在一个模块中使用一次。然后使用Object.assignimport*asmyselffrom'./ambidextrous-cow.js'exportdefaultObject.assign(speak,myself)exportfunctionspeak(){console.log('moo')}注意,Object.assign可以仅用于功能。对应输入示例importcowfrom'./ambidextrous-cow'import*asalsocowfrom'./ambidextrous-cow'cow()//moocow.speak()//mooalsocow.speak()//moo参考文章1。[es6]import,export,defaultcheatsheet2.解释exportimport和exportdefault在JavaScriptES6中的用法和区别3.ESModules:Usingnamedexportsasdefaultexport4.exportinMDN我在github上...
