Comportamiento de exportación predeterminado modificado de Babel 6: un cambio de la comodidad a la coherencia semántica
En un cambio innovador, Babel 6 ha revisado su enfoque para exportar valores predeterminados, introduciendo un cambio del comportamiento anterior inspirado en CommonJS a principios estrictos de ES6. Este cambio ha generado oportunidades y desafíos para los desarrolladores.
Anteriormente, Babel agregaba la línea "module.exports = exports['default']" a las declaraciones de exportación predeterminadas, lo que permitía a los desarrolladores acceder a ellas como "require( './foo')" directamente. Sin embargo, con Babel 6, esta práctica se suspendió. Ahora, acceder a las exportaciones predeterminadas requiere una convención de nomenclatura explícita: "require('./foo').default".
Implicaciones y soluciones
Esta alteración ha creado el Necesidad de modificaciones de código en proyectos que dependían del comportamiento anterior. Si bien en muchos casos es deseable adoptar la sintaxis de importación/exportación de ES6, algunos códigos heredados pueden requerir soluciones alternativas.
Para preservar la funcionalidad anterior sin requerir correcciones manuales, se puede emplear el "babel-plugin-add-module- complemento "exportaciones". Este complemento vuelve a insertar la línea "module.exports = exports['default']", emulando el mecanismo de exportación anterior a Babel 6.
Como alternativa, los desarrolladores que encuentren el problema de que las exportaciones con nombre se comporten de manera diferente en ES6 pueden exportar explícitamente exportaciones no predeterminadas para evitar anulaciones de objetos de módulo.
Ejemplo:
Entrada:
const foo = {} export default foo
Salida con Babel 5:
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var foo = {}; exports["default"] = foo; module.exports = exports["default"];
Salida con Babel 6 (y el complemento es2015):
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); var foo = {}; exports["default"] = foo;
Conclusión
El comportamiento de exportación predeterminado modificado de Babel 6 garantiza la adherencia a la semántica de ES6, promoviendo la coherencia y evitando confusión. Si bien requiere algunos ajustes de código, en última instancia contribuye a la adopción de estándares y prácticas de JavaScript modernos.
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