J'essaie de déterminer s'il y a de grandes différences entre ces deux, à part pouvoir importer avec export default
simplement en faisant:
import myItem from 'myItem';
Et en utilisant export const
je peux faire:
import { myItem } from 'myItem';
Je me demande s'il existe des différences et / ou des cas d'utilisation autres que celui-ci.
javascript
ecmascript-6
es6-modules
ajmajmajma
la source
la source
const
rendra l'identifiant en lecture seule. Donc, dans le cas des valeurs primitives, vous pouvez considérer que c'est immuable. Notez que la valeur elle-même n'est pas immuable, donc les objets, les tableaux, etc. peuvent être modifiés - tout simplement pas réaffectés.const
.Réponses:
Il s'agit d'une exportation nommée par rapport à une exportation par défaut.
export const
est une exportation nommée qui exporte une ou plusieurs déclarations const.Pour souligner: ce qui importe ici, c'est le
export
mot - cléconst
utilisé pour déclarer une ou plusieurs déclarations const.export
peut également être appliqué à d'autres déclarations telles que les déclarations de classe ou de fonction.Export par défaut (
export default
)Vous pouvez avoir une exportation par défaut par fichier. Lorsque vous importez, vous devez spécifier un nom et importer comme ceci:
Vous pouvez lui donner le nom de votre choix.
Exportation nommée (
export
)Avec les exportations nommées, vous pouvez avoir plusieurs exportations nommées par fichier. Importez ensuite les exportations spécifiques que vous souhaitez entourées d'accolades:
Ou il est possible d'utiliser une valeur par défaut avec des importations nommées dans la même instruction:
Importation d'espace de noms
Il est également possible d'importer tout depuis le fichier sur un objet:
Remarques
Une exportation par défaut est en fait une exportation nommée avec le nom
default
, vous pouvez donc l'importer avec une importation nommée:la source
export default
affecte la syntaxe lors de l'importation de la "chose" exportée, lors de l'autorisation d'importer tout ce qui a été exporté, en choisissant le nom dans leimport
lui même, quel que soit le nom lors de son exportation, simplement parce qu'il est marqué comme "par défaut".Un cas d'utilisation utile, que j'aime (et utilise), permet d'exporter une fonction anonyme sans avoir à la nommer explicitement , et seulement lorsque cette fonction est importée, il faut lui donner un nom:
Exemple:
Exportez 2 fonctions, l'une est
default
:Importez les fonctions ci-dessus. Composer un nom pour celui-
default
ci:Lorsque la
{}
syntaxe est utilisée pour importer une fonction (ou variable), cela signifie que tout ce qui est importé était déjà nommé lors de l'exportation, il faut donc l'importer exactement sous le même nom, sinon l'importation ne fonctionnerait pas.Exemples erronés:
La fonction par défaut doit être la première à importer
divide_1
n'a pas été exportémodule_1.js
, donc rien ne sera importésquare
n'a pas été exporté dansmodule_1.js
, car{}
indique au moteur de rechercher explicitement uniquement les exportations nommées .la source
import something from
au lieu deimport { somethingNamed } from
.Remarque mineure: veuillez noter que lorsque vous importez à partir d'une exportation par défaut, la dénomination est complètement indépendante. Cela a en fait un impact sur les refactorisations.
Disons que vous avez une classe
Foo
comme celle-ci avec une importation correspondante:Maintenant, si vous refactorisez votre
Foo
classeBar
et renommez également le fichier, la plupart des IDE ne toucheront PAS à votre importation. Vous vous retrouverez donc avec ceci:En particulier dans Typescript, j'apprécie vraiment les exportations nommées et le refactoring plus fiable. La différence est simplement le manque du
default
mot - clé et les accolades. Cette btw vous empêche également de faire une faute de frappe dans votre import puisque vous avez maintenant la vérification de type.la source
import { Foo as Anything } from …
que vous pouvez le faireimport Anything from …
avec les exportations par défaut.as
n'est vraiment pas le point dans ce commentaire source. Merci pour le downvote; pexport default
pour exporter l'objet principal d'un projet, en particulier à partir d'un paquet npm (il remplace amodule.exports =
). Mais, en interne dans un projet, il est préférable d'utiliser uniquement les exportations nommées.De la documentation :
la source
Lorsque vous mettez par défaut, c'est ce qu'on appelle l'exportation par défaut. Vous ne pouvez avoir qu'une seule exportation par défaut par fichier et vous pouvez l'importer dans un autre fichier avec le nom de votre choix. Lorsque vous ne mettez pas la valeur par défaut, appelée exportation nommée, vous devez l'importer dans un autre fichier en utilisant le même nom avec des accolades.
la source
J'ai eu le problème que le navigateur n'utilise pas es6.
Je l'ai corrigé avec:
Le module de type indique au navigateur d'utiliser ES6.
Ensuite, cela devrait fonctionner.
la source