Solucionado (ver solução)
Solucionado
(ver solução)
1
resposta

Import com lazy loading

Galera, boa noite. Já teve problema ao carregar dinamicamente um bundle com lazy loading?

Ele gera no build de dev o license, mas não o bundle.

Ex.:

importaDados() {
        import ('../services/negociacoes-service.js')
        .then(modulo => {
            const negociacoesService = new modulo.NegociacoesService();
            negociacoesService
                .obterNegociacoesDoDia()
                .then(negociacoesDeHoje => {
                    return negociacoesDeHoje.filter(negociacaoDeHoje => {
                        return !this.negociacoes
                            .lista()
                            .some(negociacao => negociacao
                                .ehIgual(negociacaoDeHoje));
                    });
                })
                .then(negociacoesDeHoje => {
                    for (let negociacao of negociacoesDeHoje) {
                        this.negociacoes.adiciona(negociacao);
                    }
                    this.negociacoesView.update(this.negociacoes);
                });

        });
    }
1 resposta
solução!

Oi Raphael, tudo bem?

Desculpe a demora em retornar.

Sim, já tive problemas com lazy loading em alguns projetos. O problema que você está enfrentando parece estar relacionado à configuração do Webpack para gerar o bundle do código que você está tentando carregar dinamicamente.

Quando usamos o lazy loading, estamos dividindo o código da nossa aplicação em módulos menores e carregando-os apenas quando são necessários. Isso pode melhorar significativamente o desempenho da aplicação, especialmente quando lidamos com grandes quantidades de código.

No entanto, para que isso funcione corretamente, é necessário configurar corretamente o Webpack para gerar os bundles de forma separada e otimizada. Certifique-se de que você está usando a opção import() corretamente para carregar o módulo de forma assíncrona e que o Webpack está configurado corretamente para gerar os bundles de forma otimizada.

Um exemplo de código que usa o import() para carregar um módulo de forma assíncrona pode ser visto abaixo:

import('./path/to/module')
  .then(module => {
    // use the module here
  })
  .catch(error => {
    // handle any errors here
  });

Ao usar o import(), o Webpack irá gerar um bundle separado para o módulo que está sendo carregado. Certifique-se de que a configuração do Webpack esteja correta para gerar esses bundles otimizados. Uma forma de fazer isso é utilizar a opção optimization.splitChunks no arquivo de configuração do Webpack, como no exemplo abaixo:

module.exports = {
  // ...
  optimization: {
    splitChunks: {
      chunks: 'all',
    },
  },
};

Essa opção instrui o Webpack a gerar bundles separados para os módulos que estão sendo carregados dinamicamente. Certifique-se de que essa opção esteja configurada corretamente no seu projeto.

Além disso, verifique se as dependências do seu projeto estão sendo corretamente gerenciadas pelo Webpack. Certifique-se de que as dependências que estão sendo usadas nos módulos que você está carregando dinamicamente estão incluídas corretamente no bundle gerado.

Por fim, lembre-se de que o lazy loading pode trazer grandes benefícios para o desempenho da sua aplicação, mas também pode aumentar a complexidade do código. Certifique-se de que você está usando o lazy loading de forma adequada e que seu código está estruturado de forma clara e organizada.

Espero que tenha te ajudado.

Um abraço e bons estudos.

Quer mergulhar em tecnologia e aprendizagem?

Receba a newsletter que o nosso CEO escreve pessoalmente, com insights do mercado de trabalho, ciência e desenvolvimento de software