"Se um trabalhador quiser fazer bem o seu trabalho, ele deve primeiro afiar suas ferramentas." - Confúcio, "Os Analectos de Confúcio. Lu Linggong"
Primeira página > Programação > Como o Babel 6 lida com as exportações padrão de maneira diferente?

Como o Babel 6 lida com as exportações padrão de maneira diferente?

Publicado em 2024-11-14
Navegar:884

How Does Babel 6 Handle Default Exports Differently?

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.

Declaração de lançamento Este artigo foi reimpresso em: 1729644858 Se houver alguma violação, entre em contato com [email protected] para excluí-lo
Tutorial mais recente Mais>

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