Y a-t-il une différence entre:
import utils from 'utils'
et
import * as utils from 'utils'
?
Dans le cas A:
//utils.js
export function doSomething()
{
//...
}
Dans le cas B:
//utils.js
export function doSomething()
{
//...
}
export default function doSomethingDefault()
{
//...
}
[~ # ~] mise à jour [~ # ~] :
J'ai été induit en erreur par la fonction intellisense de vscode, mais comme recommandé, un petit test sur node + babel a montré la différence:
//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);
De votre exemple:
Cas A:
//utils.js
export function doSomething()
{
//...
}
Cas B:
//utils.js
export function doSomething()
{
//...
}
export default function doSomethingDefault()
{
//...
}
Résultat:
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)
La différence entre le cas A et le cas B est que, dans le cas A import utils from 'utils'
, utils
sera undefined
car il n'y a pas d'exportation par défaut. Dans le cas B, utils
fera référence à doSomethingDefault
.
Avec import * as utils from 'utils'
, dans le cas A utils
aura une méthode (doSomething
), tandis que dans le cas B utils
aura deux méthodes (doSomething
et doSomethingDefault
).
import utils from 'utils'
importe par défaut du paquet 'utils'. undefined
dans le cas fourni.
import * as utils from 'utils'
importe tout le module exports
objet avec toutes les exportations nommées disponibles, y compris par défaut.