[MÚSICA]
Antes de começar a examinar Angular com mais detalhes, vamos nos perguntar
a pergunta fundamental, por que precisamos dessas estruturas JavaScript?
O que exatamente eles são e o que eles nos ajudam
realizar que não podemos fazer usando JavaScript Padrão?
Vamos examinar algumas dessas perguntas em um pouco de detalhes nesta palestra.
Primeiro, por que estruturas JavaScript?
Obviamente, a partir de sua experiência anterior com JavaScript e
também talvez experiência com estruturas baseadas em UI web como Bootstrap e
o uso de jQuery, você mais ou menos imaginou que você pode
obter a maioria das coisas que você deseja fazer em um site realizado,
usando todas essas ferramentas e técnicas que você já tem em mãos.
Na verdade, muitos sites bem-sucedidos podem ser implementados usando
essas técnicas e ferramentas simples.
Mas à medida que a complexidade do seu aplicativo cresce,
a quantidade de manipulação DOM que precisa ser feita e a quantidade de atualizações de dados
que precisam ser tratadas manualmente torna-se significativamente complicada.
As abordagens simples como usar a biblioteca jQuery podem
não atender suficientemente às necessidades que você tem em mãos.
Aqui é onde a disponibilidade de estruturas bem estruturadas
como Angular que dependem de padrões,
paradigmas de engenharia de software ou padrões de engenharia de software como o modelo view
controlador ou o modelo de visão de modelo ou a visão de modelo o que quer que seja, nos ajuda a
implementar estes web aplicativos de forma eficiente e escalável.
Agora, neste contexto, vamos falar sobre isso com um pouco mais de detalhes
à medida que avançamos neste curso.
Nós também vamos falar sobre como nós vincular o modelo a uma visão e
o uso de controladores e os modelos de visualização para realizar essas coisas.
Será discutido com um pouco mais de detalhes à medida que examinamos Angular neste curso.
Deixe-me lembrá-lo rapidamente do que é uma biblioteca de software,
uma biblioteca de software é uma coleção de implementações de comportamentos
que você usa repetidamente em seus aplicativos.
Assim, esses comportamentos podem ser implementados usando funções com interfaces
bem definidas para
que fazer uso deles na implementação de seu aplicativo se torna simples.
Se você tiver feito a programação em qualquer idioma, você geralmente
verá que muitas das funcionalidades padrão suportadas
nessas linguagens são implementadas por meio de bibliotecas que você usa.
Por exemplo, as bibliotecas de saída de entrada e talvez até
as bibliotecas GUI que muitas linguagens de programação padrão suportam.
Este é o lugar onde o conceito de reutilização de comportamento é muito,
muito eficaz porque somos capazes de implementá-lo uma vez em uma biblioteca e
então reutilizar esse comportamento onde quer que precisemos dentro de nosso aplicativo de software.
Isso também traz modularidade à maneira como nossa aplicação é implementada.
Um bom exemplo de uma biblioteca de software que é usado no mundo web é jQuery.
Se você tivesse feito o curso de Bootstrap anterior,
você teria visto alguns elementos do jQuery nesse curso.
Neste contexto,
deixe-me também diferenciar uma biblioteca de software de uma estrutura de software.
Uma estrutura de software é uma abstração
em que o software fornece essa funcionalidade genérica e
, em seguida, fornece a capacidade de personalizar essa funcionalidade para
implementar as soluções para sua aplicação específica.
Então você vai aumentar a estrutura de software com seu próprio código
, a fim de realizar o que você está tentando realizar.
Então esta é uma maneira diferente de pensar sobre como você
tenta resolver o problema em vez de usar uma biblioteca de software.
Agora, esta estrutura de software fornece um ambiente universal e reutilizável
com determinadas funcionalidades que fazem parte de uma plataforma de software maior.
Vamos olhar para Angular como um exemplo de como isso é realizado com mais detalhes.
Existem vários outros frameworks de software que são usados no mundo web
incluindo Ember, Backbone, e muitos outros.
Agora aqui, você pode obviamente pensar na pergunta.
Como distinguir uma biblioteca de uma estrutura?
Quais são as características salientes de cada um e
por que você classificaria um como uma biblioteca e outro como uma estrutura?
Onde você faz a distinção entre os dois?
Agora isto devo dizer,
há uma linha tênue separando uma biblioteca de uma estrutura.
Dependendo de como você aborda isso, você pode ver um ou
o outro como uma biblioteca ou uma estrutura, e
dependendo de quem você perguntar, algumas pessoas podem classificar um determinadoabordagem
como uma abordagem de biblioteca em oposição a uma abordagem de estrutura.
Novamente, não vamos dividir nossos cabelos sobre tentar exatamente
classificar as coisas em uma biblioteca ou uma estrutura.
De nossa perspectiva, se algo nos ajuda a realizar nossa tarefa,
então estamos satisfeitos com essa abordagem.
Novamente, tendo dito isso, vamos distinguir entre uma biblioteca e
uma estrutura com um pouco mais de detalhes.
Para entender como você aborda
toda essa maneira de escrever seu aplicativo.
Quando você usa uma biblioteca em vez de usar uma estrutura.
Então, neste contexto, a seguinte definição que eu tenho emprestado
de AngularJS documentação tipo de, Eu sinto
dá um pouco mais clara distinção entre uma biblioteca e uma estrutura.
Então, esta definição diz que uma biblioteca é uma coleção de funções
que são úteis para escrever aplicações web, jQuery sendo um exemplo.
Então este é um conjunto de funções que estão disponíveis para você.
Você faz uso dessas funções ao implementar sua solução de software
para seu problema.
Quando você usa essa abordagem, é você o programador que está sempre no controle
de como você alavanca as funções que são fornecidas
pela biblioteca para realizar o que você está tentando fazer.
Uma estrutura, por outro lado, é uma implementação específica ou
implementação particular de um aplicativo web,
onde o próprio quadro dá uma ampla estrutura genérica para
seu aplicativo e, em seguida, você é solicitado a preencher os detalhes.
Os detalhes necessários para personalizar esse aplicativo
para resolver o problema específico que você está tentando resolver.
Então, aqui, a estrutura assume controle total sobre como esses aplicativos são executados e
, em seguida, ele vai chamar para o seu código fornecido pelo usuário que ajuda a obter o trabalho feito.
O código específico do aplicativo é algo que você vai escrever e
fornecê-lo e que vai se tornar parte de todo o aplicativo,
junto com o framework, e isso ajuda a realizar sua tarefa.
Novamente, isso pode não completamente, claramente permitir que você
entender a distinção entre uma estrutura e uma biblioteca.
Vamos novamente, como eu disse,
não vamos espalhar nossos cabelos tentando descobrir todos esses detalhes.
O que precisamos entender é Angular é um exemplo de uma estrutura e
quando você escreve aplicativos em Angular, a estrutura assume o controle e
você basicamente fornece as partes ausentes do código que são necessárias
para personalizar a estrutura para implementar sua aplicação web específica.
Examinando a palavra framework com um pouco mais de detalhes.
Quando falamos de uma estrutura, um dos aspectos importantes sobre como uma estrutura
opera é resumido por este termo chamado de Princípio de Hollywood.
O que exatamente eu quero dizer com o Princípio de Hollywood?
Agora, se você sabe como um agente de Hollywood funciona, quando um ator ou
uma atriz quer encontrar trabalho em Hollywood,
eles se aproximariam de um agente e o agente geralmente vai te dizer,
nós vamos ligar de volta quando tivermos algum trabalho para você.
Não ligue para nós, nós ligamos de volta.
Então, essencialmente uma estrutura está refletindo o mesmo tipo de princípio.
A estrutura diz, você fornece o que você pode fazer e
a estrutura irá chamar seu código fornecido sempre que precisar fazer alguma coisa.
Essa é a razão pela qual usamos este termo Princípio de Hollywood no mundo do software.
Isso também pode ser resumido usando esta outra expressão
chamada Inversão do controle.
Quando você usa uma biblioteca, você, o programador está no controle e
você dita como o código funciona e como o código é executado.
Quando você usa uma estrutura,
você está essencialmente rendendo seu privilégio para a estrutura e
permite que essa estrutura assuma o comando e, em seguida, ditar como o aplicativo é executado.
Agora, enquanto você pode parecer que isso é como entregar sua independência,
certamente não é o caso, se framework tem uma certa razão para assumir
a responsabilidade de realizar o que precisa fazer em seu nome.
Então este é um lugar onde faríamos uma distinção entre
duas abordagens para escrever programas.
Um chamado como a forma imperativa de escrever programas, e
o segundo chamado como uma forma declarativa de escrever programas.
Se você já fez algum curso de linguagens de programação,
você terá visto que as linguagens de programação estão geralmente usando uma ou
a outra abordagem que esta suporta na escrita de programas.
Na programação imperativa,
você está indo para especificar o de funções do programa em uma maneira passo a passo.
Então você está completamente e controle e
então você está essencialmente dizendo, é assim que você tem que realizar a tarefa e
então você vai escrever passo a passo maneira de realizar a tarefa.
Então, você como programador está completamente no controle na especificação de passos exatos
para resolver o problema.
Na programação declarativa, por outro lado,
que é efetivamente usado por frameworks como Angular.
Você está essencialmente dizendo que isso é o que eu quero obter realizado, e
é assim que eu personalizei o que especificamente eu quero obter realizado.
Como é feito não me preocupa.
Mas eu vou entregar essa responsabilidade para o quadro.
Então, essencialmente, você está fornecendo seu código de fornecimento de usuário para o framework e
dizendo, agora isso é o que eu quero que você faça, você assume o comando e faz isso acontecer.
Assim, na programação declarativa, você está apenas declarando qual é a sua intenção
e deixe a estrutura decidir como isso vai ser realizado.
Duas maneiras diferentes de pensar sobre como você aborda resolvendo seu problema.
Isso é algo que você tem que colocar sua cabeça ao redor quando você aprender
Angular porque se você está vindo do mundo da programação imperativo,
sua tendência geral seria controlar tudo e
ditar passo a passo como você quer realizar.
Então leva algum tempo para envolver sua cabeça em torno deste conceito que você
não necessariamente controla cada passo.
Em vez disso, você diz ao framework o que você quer se tornar, para ser realizado.
E dê a responsabilidade à estrutura para realizar
a tarefa em seu nome.
Novamente, não se preocupe muito com isso, e não leia muito essas definições.
Estes são de um interesse acadêmico, estes são a base de identificar diferentes padrões
de comportamentos a partir da perspectiva de um desenvolvedor de aplicativos web.
Tudo o que você se importa é como você faz seu trabalho
usando Angular como framework de aplicação web.
Chegando ao mundo dos frameworks JavaScript,
você ouvirá muitos termos sendo usados com frameworks JavaScript.
Muitas vezes você ouvirá pessoas falando sobre algo chamado único aplicativo PPage
ou um termo aliado chamado aplicativo de internet rico.
Novamente, vamos examinar o que isso significa em uma das mais recentes
lições neste curso no contexto de Angular.
Da mesma forma, você também ouvirá pessoas falando sobre Model-View-Controller,
Model-View-ViewModel, Model-View-What-Whatever, e assim por diante.
Novamente, isso é como eu disse, um paradigma de arquitetura de software
que usamos para desenvolver aplicativos de software.
Falaremos um pouco mais de detalhes sobre isso no contexto de Angular,
em uma das lições posteriores.
E neste contexto, você ouvia em Angular, coisas como ligação de dados,
roteamento, ligação de dados de uma forma e duas vias, e assim por diante.
Novamente, não seja descartado por todos esses termos.
Vamos entendê-los à medida que avançarmos neste curso.
Da mesma forma, muitas vezes você ouvirá falar sobre código JavaScript escalável, reutilizável
, que pode ser mantido e assim por diante.
Estes são conceitos maravilhosos ou
atributos maravilhosos que queremos alcançar com a nossa aplicação.
Vamos ver como Angular nos ajuda a fazer isso neste curso em particular.
E outro termo que muitas vezes você ouvirá as pessoas falando é
desenvolvimento orientado por testes.
Angular realmente apoiar o desenvolvimento orientado por testes, então mesmo antes de desenvolver
seu aplicativo, você vai escrever o teste, a fim de garantir que o código
que você implementar realmente realiza o que você está tentando realizar.
Vamos examinar um pouco de desenvolvimento orientado para a parte posterior
deste curso.
Embora, se você quiser adotar essa abordagem de desenvolvimento orientada por testes para aplicativos de implementação
, essa é uma abordagem maravilhosa.
Mas antes de irmos a esse ponto, é melhor para
nós entender o que a estrutura em si nos ajuda a realizar.
Então, neste curso, vou lidar brevemente com o desenvolvimento orientado por testes.
Mas se você estivesse implementando um aplicativo Angular real, você adotaria
uma abordagem de desenvolvimento orientada a testes para o desenvolvimento de aplicativos Angulares.
Há muitos, muitos frameworks JavaScript que estão disponíveis no mundo real.
Angular sendo um começo.
Angular em sua encarnação anterior
como AngularJS tem sido um dos frameworks JavaScript mais populares.
Vamos olhar para Angular com mais detalhes à medida que avançamos.
Da mesma forma, se você olhar para o mundo das estruturas JavaScript,
você vai ouvir as pessoas falando sobre Ember, Backbone, React.
Embora, algumas pessoas classificam React como uma biblioteca em vez de uma estrutura.
Novamente, dependendo de quem você perguntar,
algumas pessoas podem dizer que é uma estrutura e algumas pessoas podem dizer que é apenas uma biblioteca.
Novamente, não vamos nos preocupar muito com o que é, mas ele está disponível para
nós como uma abordagem para implementar aplicativos web complexos.
Da mesma forma, outras estruturas menores como Aurelia, Meteor, Polymer,
Google Polymer, que é uma próxima estrutura, Knockout, Vue e muitos outros.
E há mais e mais sendo adicionados a isso todos os dias.
Qual é o sabor do framework JavaScript de hoje?
Angular.
Acabou de sair da fase de desenvolvimento e entrar para o mundo real.
E as pessoas estão se esforçando para desenvolver aplicativos usando Angular.
Então é por isso que estamos interessados em Angular neste curso em particular.
Agora, uma vez que você aprende um deles,
você começaria a entender a abordagem suave que esses frameworks usam.
Você talvez consiga pegar outros frameworks de forma semelhante usando
os conceitos gerais que você aprende neste curso em particular.
[MÚSICA]