# Angular (framework)

Angular (comumente referido como "Angular 2+" ou "Angular 2") é uma plataforma de aplicações web de código-fonte aberto e front-end baseado em TypeScript liderado pela Equipe Angular do Google e por uma comunidade de indivíduos e corporações. Angular é uma reescrita completa do AngularJS, feito pela mesma equipe que o construiu.

## Diferenças entre Angular e AngularJS

Angular foi uma base de reescrita do AngularJS.
* Angular não tem um conceito de "escopo" ou controladores, em vez disso, ele usa uma hierarquia de componentes como o seu principal conceito arquitetônico
* Angular tem uma expressão diferente de sintaxe, concentrando-se no uso de "[ ]" para a propriedade de ligação, e no uso de "( )" para ligação do evento
* Modularidade – muito das funcionalidades principais foram movidas para as tabelas.
* Angular recomenda o uso da linguagem da Microsoft, o TypeScript, que apresenta as seguintes características:
** É baseado em classes de programação orientada a objetos
** Tipagem estática
** Programação genérica
* O TypeScript é um superconjunto do ECMAScript 6 (ES6), e é compatível com ECMAScript 5 (i.e.: JavaScript). Angular também inclui ES6:
** Lambdas
** Iteradores
** For/Of loops
** Geradores
** Reflexão
* Carregamento dinâmico
* Modelo de compilação assíncrono
* A substituição de controladores e $escopo com componentes e diretrizes – um componente é uma directiva com um modelo
* Programação reativa de suporte usando RxJS

## História
### Nomenclatura

Originalmente, a reescrita do AngularJS foi chamado de "Angular 2" pela equipe, mas isto levou à confusão entre os desenvolvedores. Para esclarecer, a equipe anunciou que termos separados devem ser usados para cada Framework, com "AngularJS", referindo-se a 1.X versões e "Angular" sem o "JS", referindo-se às versões à partir da 2 até a última.

### A versão 2.0

O Angular 2.0 foi anunciado no ng-Europe conference 22-23 de setembro de 2014. As mudanças drásticas na versão 2.0 criou uma considerável controvérsia entre os desenvolvedores. Em 30 de abril de 2015, os desenvolvedores Angular anunciaram que o Angular 2 foi transformado de Alfa a Developer Preview. O Angular 2 mudou-se para o Beta em dezembro de 2015, e a primeira versão foi publicada em Maio de 2016. A versão final foi lançada em 14 de setembro de 2016.

### Versão 4.0

Em 13 de dezembro de 2016 Angular 4 foi anunciado, ignorando o 3 para evitar uma confusão devido ao desalinhamento da versão do pacote do roteador que já foi distribuído como v3.3.0. A versão final foi lançada em 23 de Março de 2017. O Angular 4 é compatível com o Angular 2.
O Angular versão 4.3 é uma versão menor, o que significa que ele contém alterações que não são de última hora e que é uma atualização pequena para 4.x.x.
Recursos na versão 4.3
* Introdução de HttpClient, uma biblioteca menor, mais poderosa, e mais fácil de usar, para fazer Solicitações HTTP.
* Novo roteador ciclo de vida de eventos para Guardas e Resoluções. Quatro novos eventos: GuardsCheckStart, GuardsCheckEnd, ResolveStart, ResolveEnd juntam-se ao conjunto existente de ciclo de vida, tais como a NavigationStart.
* Condicionalmente desativa animações.

### Versão 5.0

Angular 5 foi lançado em 1 de novembro de 2017. Os principais aprimoramentos Angular 5 incluem suporte para web apps progressivos, uma compilação otimizadora e melhorias relacionadas ao Material Design.

### Versão 6.0

O lançamento da sexta versão do Angular ocorreu no dia quatro de Maio de 2018. Esta versão teve um foco menor na base do framework, e maior na cadeia de ferramentas e em como tornar mais fácil e rápida a migração com Angular nas atualizações futuras, como os comandos da CLI (Interface de Linha de Comando): ng update, ng add, Angular Elements, Componentes Angular Material + CDK, Componentes Iniciais Angular Material, CLI Workspaces, Suporte a biblioteca, Provedores de Árvore Shakable, Melhoramentos no desempenho de animações, e atualização do RxJS para a versão 6.

### Versão 7.0

A sétima versão do Angular foi lançada no dia dezoito de Outubro de 2018. Atualizações relacionadas ao desempenho de aplicativos, Angular Material & CDK, Rolagem Virtual, Melhor acessibilidade do elemento de formulário select (também conhecido por combobox ou dropdownlist), agora suporta Content Projection usando o padrão web para elementos personalizados, e atualizações de dependência em relação ao Typescript 3.1, RxJS 6.3, Node 10 (ainda suportando Node 8).

### Versão 7.1

O lançamento do Angular 7 ocorreu em novembro de 2018 e está disponível para download no github.com

### Versão 8.0

O lançamento da mais nova versão do Angular ocorreu em maio de 2019 e conta com algumas melhorias no funcionamento dos formulários reativos, melhoria na sintaxe para declaração de rotas lazy-loading e a esperada disponibilização do compilador Ivy, que nesta versão ainda está em preview e precisa ser habilitado, mas não é recomendado que se utilize em produção.

### Versão 9.0

O Angular 9 foi lançado em 6 de fevereiro de 2020. A versão 9 move todos os aplicativos para usar o compilador Angular Ivy por padrão. O Angular foi atualizado para funcionar com TypeScript 3.6 e 3.7. Além de centenas de correções de bugs, o compilador e o tempo de execução Ivy oferecem inúmeras vantagens:
* Tamanhos de pacote menores
* Teste mais rápido
* Melhor depuração
* Melhor classe CSS e vinculação de estilo
* Verificação de tipo aprimorada
* Erros de compilação aprimorados
* Tempos de compilação aprimorados, habilitando AOT por padrão
* Melhor Internacionalização

### Versão 10

O Angular 10 foi lançado em 24 de junho de 2020.:
* Novo seletor de intervalo de datas (biblioteca de IU de materiais)
* Avisos sobre importações CommonJS
* Configurações opcionais mais estritas
* Mantendo-se atualizado com o ecossistema
* Nova configuração de navegador padrão
* Depreciações e Remoções

### Versão 11

O Angular 11 foi lançado em 11 de novembro de 2020.:

### Versão 12

O Angular 12 foi lançado em 12 de maio de 2021.

### Versão 17 - "O renascimento"

O Angular 17 foi lançado em 06 de novembro de 2023:
* Nova documentação e uma melhor experiência do usuário para todos os níveis de desenvolvedor.
* Novo construtor de aplicativos com ESBuild e Vite.
* Novo visual, mesma estrutura.
* SSR.

### Futuros lançamentos

Desde a versão 9.0, a equipe do Angular mudou todos os novos aplicativos para usar o compilador e o tempo de execução Ivy. Eles trabalharão no Ivy para melhorar os tamanhos dos pacotes de saída e as velocidades de desenvolvimento.
"Nossa equipe continuará a trabalhar em código aberto para melhorar o site para v18. Nosso foco principal é melhorar a estabilidade do playground incorporado e nossa nova infraestrutura de referência.
No futuro, também construiremos guias adicionais e um robusto livro de receitas de tutoriais, aproveitando nosso novo playground incorporado. Também vemos uma oportunidade de criar tutoriais escritos para ajudar a mapear conceitos de outros frameworks da Web para conceitos Angular." - Emma Twersky.
Cada versão está prevista para ser compatível com a versão anterior. Em geral, novas versões do Angular são lançadas a cada seis meses, com pequenas atualizações de correção quase toda semana.