A equipe do Angular lançou recentemente a versão 8 do popular framework para criação de aplicações web de página única (SPA). A nova versão inclui muitas correções de bugs. Traz também melhorias incrementais, incluindo a funcionalidade de carregamento diferencial, e prévias do mecanismo de renderização Ivy e do sistema de builds Bazel.
O carregamento diferencial é uma atualização importante na maneira como o Angular gera e entrega código, pois pode reduzir o tamanho inicial do pacote em até 20% para navegadores modernos. Para isso, a interface em linha de comando (CLI) do Angular agora gera dois pacotes separados: um pacote moderno voltado a navegadores que suportam o ES6, e um pacote legado para navegadores mais antigos. A decisão de qual pacote usar no navegador é realizada no momento do carregamento: a tag nomodule impede que navegadores modernos executem scripts marcados com a esta tag.
A composição exata do pacote moderno é determinada pela configuração Browserlist. Já os navegadores antigos recebem um conjunto maior e mais completo de polyfills. Vale destacar que o carregamento diferencial não é uma tecnologia específica do Angular já que existe em alguns outros frameworks, como o Dojo.
O Angular 8 também inclui várias melhorias para no CLI voltadas à usabilidade. A API Builder (também conhecida como API Architect) permite que desenvolvedores adicionem operações personalizadas a processos de construção do CLI, como implantação, testes na nuvem e linting (verificação de erros e boas práticas). A API Workspace fornece uma maneira de interagir com o arquivo angular.json, usado pelo Schematics, permitindo que desenvolvedores criem fluxos de trabalho personalizados para o CLI. O CLI do Angular 8 também simplifica a criação e o agrupamento de Web Workers.
O Angular 8 traz ainda alterações menores, que agilizam o desenvolvimento e mantêm o Angular atualizado com tecnologias atuais. Esses aprimoramentos incluem:
- Atualização para a versão 3.4 do TypeScript, que passa a ser a versão mínima exigida;
- Atualização da sintaxe para o carregamento sob demanda (lazy loading) de módulos de roteamento (alinhando-se ao padrão de importações dinâmicas do ES2020);
- Aprimoração no processamento de URLs ngUpgrade.
Outras duas melhorias significativas ainda não estão prontas para produção e precisam ser ativadas por um flag opcional de preview (opt-in). O Ivy é a próxima geração do mecanismo de pipeline e renderização do Angular. Oferece melhorias significativas e pode ser ativado seguindo o guia de opt-in do Ivy. O Bazel é o mecanismo de builds interno do Google, que teve seu código aberto em 2015 e agora está sendo integrado ao Angular. Oferece várias melhorias, incluindo compilações e testes incrementais, suporte à compilação remota etc. Pode ser ativado seguindo o guia de opt-in do Bazel.
É importante observar que esses novos recursos não devem ser considerados estáveis o suficiente para uso em produção, ao menos por enquanto.
O Angular é um software livre disponível sob a licença MIT. Contribuições são bem-vindas através do repositório do Angular do Github. Listas detalhadas das mudanças no Angular 8 estão disponíveis nos links registro de alterações e nos registros de mudanças Angular material e angular-CLI.