关于default

最近在看dva的源码时,注意到dynamic.js文件中动态注入model时,用的是model.default||model。源代码如下:

ret.slice(0, len).forEach((m) => {
    m = m.default || m;
    if (!Array.isArray(m)) {
        m = [m];
    }
    m.map(_ => registerModel(app, _));
});
复制代码

这种写法跟文件引入方式有关,文件的引入方式分为require和import;
import的引入方式有提升的效果,会将引入的模块提升到整个模块的头部,首先执行。(是在编译阶段执行的) 当一个文件在使用export导出时,可能会存在导出多个变量的情况 例如a.js

var obj = {a:1};
export const  b = 2; 
export default obj;

复制代码

当在另外一个文件b.js引入a.js的时候使用require的方式时 var a = require './a.js' 此时引入的这个模块中,此时 a = {default:obj,b:2}, 得到的对象是整个对象。

使用import的方式时 在es6中 import a from './a.js' 的本意是想去引入一个 es6 模块中的 default 输出。所以此时的a=obj; import a, { b } from './a.js 所以当我们在一个文件中导出多个变量时,在使用导出变量时最好使用*.defual||*这样的方式。

转载于:https://juejin.im/post/5b908bdb5188255c944610f0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值