Estoy tratando de determinar si hay grandes diferencias entre estos dos, además de poder importar con export default
solo hacer:
import myItem from 'myItem';
Y usando export const
puedo hacer:
import { myItem } from 'myItem';
Me pregunto si hay diferencias y / o casos de uso distintos a este.
javascript
ecmascript-6
es6-modules
ajmajmajma
fuente
fuente
const
hará que el identificador sea de solo lectura. Entonces, en el caso de valores primitivos, puede considerar que es inmutable. Tenga en cuenta que el valor en sí no es inmutable, por lo que los objetos, las matrices, etc. se pueden cambiar, pero no se pueden reasignar.const
.Respuestas:
Es una exportación con nombre frente a una exportación predeterminada.
export const
es una exportación con nombre que exporta una declaración o declaraciones constantes.Para enfatizar: lo que importa aquí es la
export
palabra clave queconst
se usa para declarar una declaración o declaraciones constantes.export
también se puede aplicar a otras declaraciones, como las declaraciones de clase o función.Exportación predeterminada (
export default
)Puede tener una exportación predeterminada por archivo. Cuando importa tiene que especificar un nombre e importar así:
Puedes ponerle el nombre que quieras.
Exportación con nombre (
export
)Con exportaciones con nombre, puede tener múltiples exportaciones con nombre por archivo. Luego importe las exportaciones específicas que desee rodeadas de llaves:
O es posible usar un valor predeterminado junto con importaciones con nombre en la misma declaración:
Importar espacio de nombres
También es posible importar todo desde el archivo en un objeto:
Notas
Una exportación predeterminada es en realidad una exportación con nombre con el nombre,
default
por lo que puede importarla con una importación con nombre:fuente
export default
afecta la sintaxis al importar la "cosa" exportada, al permitir importar, lo que se haya exportado, eligiendo el nombre enimport
sí mismo, sin importar cuál era el nombre cuando se exportó, simplemente porque está marcado como "predeterminado".Un caso de uso útil, que me gusta (y uso), es permitir exportar una función anónima sin tener que nombrarla explícitamente , y solo cuando esa función se importa, se le debe dar un nombre:
Ejemplo:
Exportar 2 funciones, una es
default
:Importar las funciones anteriores. Inventar un nombre para el
default
uno:Cuando la
{}
sintaxis se usa para importar una función (o variable), significa que lo que se importa ya se nombró cuando se exportó, por lo que se debe importar exactamente con el mismo nombre, de lo contrario, la importación no funcionaría.Ejemplos erróneos:
La función predeterminada debe ser primero para importar
divide_1
no se exportómodule_1.js
, por lo que no se importará nadasquare
no se exportómodule_1.js
, porque{}
le dice al motor que busque explícitamente solo exportaciones con nombre .fuente
import something from
lugar deimport { somethingNamed } from
.Nota menor: Tenga en cuenta que cuando importa desde una exportación predeterminada, la denominación es completamente independiente. Esto realmente tiene un impacto en las refactorizaciones.
Digamos que tiene una clase
Foo
como esta con una importación correspondiente:Ahora, si refactoriza su
Foo
claseBar
y cambia el nombre del archivo, la mayoría de los IDE NO tocarán su importación. Entonces terminarás con esto:Especialmente en Typecript, realmente aprecio las exportaciones con nombre y la refactorización más confiable. La diferencia es solo la falta de la
default
palabra clave y las llaves. Este, por cierto, también le impide hacer un error tipográfico en su importación, ya que ahora tiene verificación de tipo.fuente
import { Foo as Anything } from …
mismo queimport Anything from …
con las exportaciones predeterminadas.as
realmente no es el punto en ese comentario fuente. Gracias por el voto negativo; pexport default
para exportar el objeto principal de un proyecto, en particular desde un paquete npm (reemplaza amodule.exports =
). Pero, internamente en un proyecto, es mejor usar solo exportaciones con nombre.De la documentación :
fuente
Cuando pones por defecto, se llama exportación por defecto. Solo puede tener una exportación predeterminada por archivo y puede importarla en otro archivo con el nombre que desee. Cuando no establece el valor predeterminado, se llama exportación con nombre, debe importarlo en otro archivo usando el mismo nombre con llaves dentro.
fuente
Tuve el problema de que el navegador no usa es6.
Lo solucioné con:
El módulo de tipo le dice al navegador que use ES6.
Entonces debería funcionar.
fuente