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.
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