Estoy tratando de determinar si hay grandes diferencias entre estos dos, además de poder importar con export defaultsolo hacer:
import myItem from 'myItem';
Y usando export constpuedo 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

consthará 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 constes una exportación con nombre que exporta una declaración o declaraciones constantes.Para enfatizar: lo que importa aquí es la
exportpalabra clave queconstse usa para declarar una declaración o declaraciones constantes.exporttambié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,
defaultpor lo que puede importarla con una importación con nombre:fuente
export defaultafecta la sintaxis al importar la "cosa" exportada, al permitir importar, lo que se haya exportado, eligiendo el nombre enimportsí 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
defaultuno: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_1no se exportómodule_1.js, por lo que no se importará nadasquareno se exportómodule_1.js, porque{}le dice al motor que busque explícitamente solo exportaciones con nombre .fuente
import something fromlugar 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
Foocomo esta con una importación correspondiente:Ahora, si refactoriza su
FooclaseBary 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
defaultpalabra 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.asrealmente no es el punto en ese comentario fuente. Gracias por el voto negativo; pexport defaultpara 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