exports - javascript import js
Diferencia entre exportar const foo, export default foo y module.exports=foo (3)
Estoy realmente confundido acerca de:
export const foo
-
export default foo
-
module.exports = foo;
Sé que estos son muy básicos, pero alguien podría diferenciarme y explicarme esto. Realmente quiero entender.
La declaración de export se utiliza para exportar funciones, objetos o primitivos de un archivo (o módulo) determinado.
Exportaciones con nombre Esta es una exportación con nombre en ES6 javascript
export const foo
que se importa como:
import { foo } from ''path''
Exportación predeterminada Esta es una exportación predeterminada (se puede importar con cualquier nombre)
export default foo
que se importa como tal:
import bar from ''path''
Esta es una exportación común que se usa en los programas de nodejs.
module.exports = foo;
que se importa como:
var foo = require(''path'')
Para more detalles
Vamos a tomar cada uno de estos uno por uno.
exportación const
export const foo
Esta es la sintaxis de exportación de ES6 para una exportación nombrada. Puedes tener muchas exportaciones con nombre. Dice que desea exportar el valor de la variable foo
y también está declarando que ese símbolo está const
en este módulo.
En realidad, no puede usar la export const foo
al mismo tiempo que puede usar const foo;
todo por sí mismo. En su lugar, deberías asignarle algo:
export const foo = 12;
La const
aplica solo dentro del propio módulo. No afecta lo que alguien puede hacer con el valor una vez que ha importado el valor del módulo en el otro extremo porque en el otro extremo (donde se importa), su valor se copia en otra variable. Si esa otra variable se crea con la declaración de importación, entonces se const
automáticamente en el lado de importación (no se le puede asignar) sin importar lo que se declaró en el lado de exportación.
Esto podría ser importado como cualquiera de estos:
import {foo as localFoo} from ''lib'';
import {foo} from ''lib'';
El primero importa la propiedad foo
del módulo en una variable localFoo
denominada. El segundo importa la propiedad foo
del módulo en una variable llamada foo
.
exportación predeterminada
export default foo
Esta también es la sintaxis de ES6 y dice que también desea exportar el valor de la variable foo
y desea que sea el default
exportación default
, por lo que si alguien importa solo el módulo y no las propiedades del módulo, esta es la variable que obtener. Solo puede tener una exportación default
por módulo.
Internamente, la exportación predeterminada es en realidad solo una exportación con nombre con el nombre especial default
asignado:
import localVar from ''myLib'';
Esto obtendrá la exportación default
de myLib y asignará su valor a una variable declarada localmente llamada localVar
. Lo anterior es una taquigrafía para esto:
import { default as localVar } from ''lib'';
Por lo tanto, la exportación default
solo le permite tener una importación de acceso directo para una exportación en particular. La sintaxis de importación / exportación de ES6 fue diseñada para que la sintaxis sea lo más breve posible para la importación / exportación predeterminada. Pero, por razones obvias, solo hay una propiedad predeterminada por módulo.
módulo.exportaciones
// inside of myModule
module.exports = foo;
Esta es la sintaxis de node.js para exportar el valor de la variable foo
y lo está exportando al nivel superior. Cuando alguien usa este módulo:
let x = require(''myModule'');
console.log(x); // will show the value of `foo` from the previous module
Esta no es una sintaxis de ES6, pero es una sintaxis regular compatible con ES5 que utiliza el module.exports
y require()
infraestructura integrada en node.js.
exportar const foo: exportar constantes (ES6) exportar por defecto foo: exportar objeto (ES6)
Las declaraciones anteriores son ECMA Script 2015 (también conocido como ES6) implementación.
En un archivo ES6 JS normal, se puede exportar cualquier objeto (variable) o constantes. Tenga en cuenta que no puede cambiar la referencia constante, aunque la estructura interna se puede modificar (extraño).
En ES6 se pueden tener múltiples exportaciones en módulo (archivo de script). que se puede agregar en el script de llamada como
import {Obj1, Obj2} from module_file
llegando a exportar por defecto, solo se puede tener un solo por defecto de exportación en el módulo. y durante la importación, cuando los nombres exactos no están definidos, se ha seleccionado el valor predeterminado.
module.exports = foo; es una implementación anterior y es la misma que la exportación por defecto. excepto que se importa con una declaración de requerimiento en lugar de una importación
Para más información, consulte export