Alteração significativa: comportamento padrão de exportação do Babel 6
Com o lançamento do Babel 6, mudanças significativas foram implementadas na forma como as exportações padrão são tratadas . Embora Babel tenha adicionado anteriormente a linha module.exports = exports["default"], esta funcionalidade foi removida.
Esta modificação requer uma mudança na sintaxe de importação do módulo. Anteriormente, o código usava a sintaxe legada:
var foo = require('./foo'); // use foo
Agora deve empregar a seguinte sintaxe:
var foo = require('./foo').default; // use foo
Embora esse ajuste possa parecer pequeno, ele pode representar um desafio para projetos com dependências de código significativas no mecanismo de exportação anterior.
Solução alternativa
Se o comportamento de exportação legado for necessário, o uso direto do CommonJS é recomendado. Alternativamente, um plugin personalizado pode ser usado para fornecer a compatibilidade desejada. A funcionalidade deste plug-in provavelmente refletiria o comportamento removido no Babel 6, adicionando a linha module.exports = exports["default"] à saída transpilada.
Impact of Named Exports
É importante notar que a remoção da atribuição automática module.exports melhora a semântica do ES6 e evita possíveis confusões. As exportações nomeadas agora se comportarão conforme o esperado, sem atribuições acidentais à exportação padrão.
Exemplo
O código a seguir demonstra a diferença entre o comportamento de exportação do Babel 5 e do Babel 6:
// Input
const foo = {}
export default foo
Saída Babel 5
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
module.exports = exports["default"];
Saída Babel 6
"use strict";
Object.defineProperty(exports, "__esModule", {
value: true
});
var foo = {};
exports["default"] = foo;
Como pode ser observado, a única diferença na saída é a ausência de module.exports = exports["default"] no Babel 6.
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3