之间有什么区别:
import utils from 'utils'
和
import * as utils from 'utils'
?
如果是A:
//utils.js
export function doSomething()
{
//...
}
如果是B:
//utils.js
export function doSomething()
{
//...
}
export default function doSomethingDefault()
{
//...
}
更新:
我被vscode的intellisense功能误导了,但正如推荐的那样,对节点+ babel的一个小测试表明了差异:
//index.js
import utilsCaseA from './utils1'
import * as utilsCaseAWildcard from './utils1'
var utilsCaseARequire = require('./utils1')
import utilsCaseB from './utils2'
import * as utilsCaseBWildcard from './utils2'
var utilsCaseBRequire = require('./utils2')
var compareObjects =
{
utilsCaseA, utilsCaseAWildcard, utilsCaseARequire,utilsCaseB,utilsCaseBWildcard,utilsCaseBRequire
};
console.log(compareObjects);
答案 0 :(得分:9)
从你的例子:
案例A:
//utils.js
export function doSomething()
{
//...
}
案例B:
//utils.js
export function doSomething()
{
//...
}
export default function doSomethingDefault()
{
//...
}
结果:
import utils from 'utils'
utils() // (Case A: undefined, Case B: doSomethingDefault)
import * as utils from 'utils'
utils // (Case A: utils = { doSomething: function }, Case B: utils = { doSomething: function, doSomethingDefault: function })
import { doSomething } from 'utils'
doSomething() // (both Case A and Case B: doSomething = doSomething)
案例A和案例B之间的区别在于,在案例A import utils from 'utils'
中,utils
将为undefined
,因为没有默认导出。如果是B,utils
将引用doSomethingDefault
。
使用import * as utils from 'utils'
,案例A utils
将有一个方法(doSomething
),而案例B utils
将有两个方法(doSomething
和doSomethingDefault
)。
答案 1 :(得分:6)
import utils from 'utils'
默认来自' utils'包。在提供的案例中undefined
。
import * as utils from 'utils'
使用所有可用的命名导出(包括默认值)导入整个模块exports
对象。