看透JavaScript:原理、方法与实践
上QQ阅读APP看书,第一时间看更新

10.3 默认导出

按照前面的方法进行导入时,虽然可以对导入的变量进行重命名,但是需要知道变量在原来模块中导出的名称才可以。既然导入后可以重命名,那么如果可以不用管原来模块中导出的是什么名字,直接在导入时指定一个变量名不就更方便了?ES还真提供了这样的功能!在模块导出的时候可以不指定变量名,只要使用关键字default就可以了,这样在导入的时候就不需要关心导出时的变量名,例如下面的例子。

    //worker.js
    export default function(){
        console.log("working...");
    }


    //factory.js
    import work from "./worker"
    work();     //working...

这个例子在worker.js中就导出了默认的方法,然后在factory.js中导入为work方法。注意,导入默认变量时不使用花括号,直接写就可以了。如果除了默认变量外还有其他变量,那么可以同时使用花括号将其他变量导入。另外,本例中导出的是匿名函数,实际上命名函数或者变量也可以默认导出,并且默认导出也可以在定义完之后使用单独的语句进行导出,例如下面的例子。

    //worker.js
    function workerWork(){
        console.log("working...");
    }
    export var name = "王进喜";
    export default workerWork;


    //factory.js
    import work, {name as workerName} from "./worker"
    work();                           //working...
    console.log(workerName);         //王进喜