ES6:"import*as alias"vs"import alias"

Phi*_*nin 13 javascript ecmascript-6 es6-modules

之间有什么区别:

import utils from 'utils'

import * as utils from 'utils'

如果是A:

//utils.js
export function doSomething()
{
//...
}
Run Code Online (Sandbox Code Playgroud)

如果是B:

//utils.js
export function doSomething()
{
//...
}
export default function doSomethingDefault()
{
//...
}
Run Code Online (Sandbox Code Playgroud)

更新:

我被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);
Run Code Online (Sandbox Code Playgroud)

在此输入图像描述

ino*_*tia 12

在你的例子中:

//utils.js
export function doSomething()
{
//...
}
Run Code Online (Sandbox Code Playgroud)

案例A和案例B之间的区别在于,在案例A中import utils from 'utils',utils将是undefined因为没有默认导出.在案例B中,utils将参考doSomethingDefault.

使用import * as utils from 'utils',在案例A utils中将有一个方法(doSomething),而在案例B utils中将有两个方法(doSomethingdoSomethingDefault).


Yur*_*nko 7

import utils from 'utils'从'utils'包导入默认值.undefined在提供的情况下.

import * as utils from 'utils'exports使用所有可用的命名导出导入整个模块对象,包括default.