Angular 2.1
Framework Name: Angular
Student List (with name and USP id):
- Felipe Cadavez Oliveira - 11208558 (coordenador)
- João Lucas Rodrigues Constantino - 11795763 (editor)
- Gabriel Zanotim Manhani - 11912276
- Eduardo Henrique Porto Silva - 11796656
- Ana Clara Amorim Andrade - 10691992
- Henrique Garcia Gomes do Ó - 10734331
- Mateus Israel Silva - 11735042
- Breno Alves de Sousa - 11345555
- Yure Pablo do Nascimento Oliveira - 11275317
Main Framework Features:
Angular se trata de um framework cross-platform, de código aberto e baseado em TypeScript, que permite a construção tanto de aplicações simples, quanto de aplicações de maior complexidade, além de realizar otimizações de performance nos códigos escritos pelo usuário — tornando-o eficiente em construir aplicações ágeis. Ademais, abstrai a manipulação do Document Object Model (DOM), e permite elevada modulação dos componentes de desenvolvimento — de modo a reduzir o código e o acoplamento —, além de seguir a arquitetura Model-View-Controller, que é ideal para a construção de aplicações baseadas em interface gráfica,
Quanto às características de desenvolvimento, o framework envolve comandos em linha por meio da Angular CLI, assim como diretivas de desenvolvimento, e a fácil injeção de dependências externas. Ainda, inclui um eficiente two-way data binding — de modo a refletir transformações do Modelo na camada de Visão instantaneamente —, e o Component Development Kit (CDK), que permite, dentre diversas outras possibilidades de automação do frontend, o uso do virtual scrolling.
Framework Advantages:Em geral, suas features são vantajosas em si, uma vez que aprimoram e facilitam as condições de desenvolvimento em comparação às condições nativas. Nesse sentido, destacam-se o projeto modular baseado em componentes (component-based), a fácil manipulação do DOM via two-way data binding, o suporte integrado para AJAX, HTTP e observables, a abstração e facilitação do desenvolvimento de Single Page Applications (SPAs), e a inclusão do Angular Ivy — que provê otimização de uso e de pré-compilação de arquivos do servidor, sendo muito vantajoso para o desenvolvimento de pequenas aplicações.
Além disso, apresenta integração com diversas bibliotecas de automação de testes e, somando-se ao fato de ser baseado em TypeScript, torna-se ótima opção para a implementação de testes de código — de modo a facilitar o processo de validação e de verificação da solução implementada. Por fim, o framework é mantido — em código aberto — pela Google, possui uma extensa comunidade e um grande tempo de mercado, é amplamente utilizado no ambiente corporativo e apresenta notórias robustez e documentação.
Framework Disadvantages:- Devido à organização em árvore implementada pelo Angular, debugar o codigo pode ser bem difícil, principalmente devido ao cascateamento de indefinições: caso uma requisição seja feita a um nó pai, porém não está definida em sua estrutura, tal requisição é propagada aos seus filhos e, caso continue não sendo atendida, a pilha de erros ascende na estrutura hierárquica até ao nó pai originalmente requisitado — de modo a complicar a sua interpretação.
- A curva de aprendizado é mais extensa, sobretudo no que se refere à injeção de dependências e à inversão de controle, tornando-se um empecilho tanto para novos programadores, quanto para programadores experientes ainda não acostumados com tais funcionalidades.
- Devido à vinculação de dados bidirecional, especialmente em dispositivos mais antigos, a abstração da manipulação do DOM pode acarretar redução de desempenho, pois envolve grande consumo de recursos computacionais por parte do navegador — o qual se encontra constantemente ocupado com a manipulação dos elementos da página.
- Caso sua SPA cresça muito, pode haver problemas de performance, pois o Angular utiliza alguns subterfúgios para conseguir executar o código de modo independente ao browser.
- No caso de frameworks modernos, como Vue e React, é criado um DOM virtual no qual eles trabalham, que possui uma manipulação muito mais simples do que o DOM utilizado pelo Angular. Além disso o Vue e o React são bibliotecas mais leves, que podem ser utilizados com outros frameworks, o que não ocorre com o Angular — dado que ele precisa de um ecossistema próprio para funcionar.
- Embora no presente isto tenha diminuído, trabalhar com o Angular costumava ser ainda mais complicado, pois, a cada nova atualização do framework, as mudanças eram bem drásticas e, em geral, requeriam uma reestruturação quase completa do código
Seu principal nicho são as aplicações dinâmicas, isto é, aquelas que precisam de resultado instantâneo e podem lidar com uma grande quantidade de dados, gerando tráfego intenso — como, por exemplo, mídias em tempo real, mídias sociais, aplicações de chat, de meteorologia, de viagem e de localização; a saber, o Angular providencia ótima performance sob essas condições, incluindo os menores tempos de resposta. Ainda, os ambientes corporativos são outro de seus nichos, nos quais há oferecimento de uma solução consistente e de fácil manutenção via, sobretudo, sua injeção de dependências e seu suporte à validação e à verificação de código.
Future Perspectives:- Implementar APIs para NgModules opcionais, de modo a simplificar o processo de inicializar e instanciar componentes, e a usar o router de modo independente a eles.
- Melhorar a performance de imagens: melhoria que pode permitir que páginas web sejam carregadas ainda mais rapidamente, proporcionando uma melhor experiência ao usuário.
- Adicionar diretivas em elementos hosts: o recurso permitiria que os desenvolvedores acrescentem propriedades aos componentes, com comportamentos adicionais, sem ter de recorrer ao uso da herança.
- Melhorar a pilha de erros, sobretudo sua capacidade de informar os passos que levaram aos erros.
- Novas primitivas CDK: novas primitivas que permitiriam criar componentes UI com base em WAI-ARIA design.
- Melhorar a performance do processo de build ao distribuir o Angular como um plugin do TypeScript.
link