"Si un trabajador quiere hacer bien su trabajo, primero debe afilar sus herramientas." - Confucio, "Las Analectas de Confucio. Lu Linggong"
Página delantera > Programación > ¿Cómo maneja Babel 6 las exportaciones predeterminadas de manera diferente?

¿Cómo maneja Babel 6 las exportaciones predeterminadas de manera diferente?

Publicado el 2024-11-14
Navegar:952

How Does Babel 6 Handle Default Exports Differently?

Cambio importante: comportamiento predeterminado de exportación de Babel 6

Con el lanzamiento de Babel 6, se han implementado cambios significativos en la forma en que se manejan las exportaciones predeterminadas . Si bien Babel agregó anteriormente la línea module.exports = exports["default"], esta funcionalidad se eliminó.

Esta modificación requiere un cambio en la sintaxis de importación del módulo. Anteriormente, el código usaba la sintaxis heredada:

var foo = require('./foo');
// use foo

Ahora debe emplear la siguiente sintaxis:

var foo = require('./foo').default;
// use foo

Si bien este ajuste puede parecer menor, puede representar un desafío para proyectos con importantes dependencias de código en el mecanismo de exportación anterior.

Solución alternativa

Si se requiere el comportamiento de exportación heredado, se recomienda el uso directo de CommonJS. Alternativamente, se puede utilizar un complemento personalizado para proporcionar la compatibilidad deseada. La funcionalidad de este complemento probablemente reflejaría el comportamiento eliminado en Babel 6, agregando la línea module.exports = exports["default"] a la salida transpilada.

Impacto de las exportaciones nombradas

Vale la pena señalar que la eliminación de la asignación automática module.exports mejora la semántica de ES6 y evita posibles confusiones. Las exportaciones con nombre ahora se comportarán como se esperaba, sin asignaciones accidentales a la exportación predeterminada.

Ejemplo

El siguiente código demuestra la diferencia entre el comportamiento de exportación de Babel 5 y Babel 6:

// Input
const foo = {}
export default foo

Salida de Babel 5

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];

Salida de Babel 6

"use strict";

Object.defineProperty(exports, "__esModule", {
  value: true
});
var foo = {};
exports["default"] = foo;

Como se puede observar, la única diferencia en el resultado es la ausencia de module.exports = exports["default"] en Babel 6.

Declaración de liberación Este artículo se reimprime en: 1729644858 Si hay alguna infracción, comuníquese con [email protected] para eliminarla.
Último tutorial Más>

Descargo de responsabilidad: Todos los recursos proporcionados provienen en parte de Internet. Si existe alguna infracción de sus derechos de autor u otros derechos e intereses, explique los motivos detallados y proporcione pruebas de los derechos de autor o derechos e intereses y luego envíelos al correo electrónico: [email protected]. Lo manejaremos por usted lo antes posible.

Copyright© 2022 湘ICP备2022001581号-3