Documenti di Didattica
Documenti di Professioni
Documenti di Cultura
ANGULARJS
Rafael de Castro Zorzo1
lder F. F. Bernardi2
RESUMO
INTRODUO
1
Rafael de Castro Zorzo, formando no curso de Tecnologia em Sistemas para Internet pelo Instituto Federal de
Educao, Cincia e Tecnologia Sul-rio-grandense, cmpus Passo Fundo (IFSul - Passo Fundo - RS). E-mail:
rafael@rafaelzorzo.com.br
2
Orientador, professor do IFSul. E-mail: elder.bernardi@passofundo.ifsul.edu.br
2
1 REFERENCIAL TERICO
Segundo Nations (s. d.), Uma aplicao Web qualquer aplicao que utiliza o
navegador como cliente, seja uma aplicao simples como um quadro de mensagens ou um
complexo processador de palavras. As aplicaes Web atuais se utilizam de ferramentas
3
Templates so trechos de cdigo HTML separados do arquivo principal, com a finalidade de organizar a
aplicao.
3
Quando o usurio abre a pgina, este faz uma requisio HTTP ao servidor (1), o qual
a responde com pginas HTML (2). Atravs da submisso de um formulrio ou link para
outra pgina, o usurio submete uma nova requisio HTTP ao servidor (3), e este retorna um
novo HTML, sendo necessria a recarga completa da pgina (4). Isso ocorre a toda interao
4
Webservers so computadores que provm arquivos conforme requisies recebidas. Basicamente, recebem
uma solicitao, decodificam essa solicitao e verificam qual arquivo est sendo solicitado. Caso esse arquivo
esteja disponvel, ele ento entregue em resposta solicitao. Exemplos de webserver: Apache e NodeJS.
4
do usurio que faz uma chamada HTTP ao servidor, pois nesse tipo de aplicao, a maior
parte do desenvolvimento controlada pelo servidor. (FINK; FLATOW, 2014, p.7 e 8)
Esta abordagem de desenvolvimento gera um overhead 5desnecessrio de cabealhos e
requisies ao servidor, pois a cada reload 6realizado na pgina, todos os arquivos HTML,
CSS e JavaScript so baixados novamente, tornando a exibio do contedo mais lenta e
levando necessidade de um novo modelo de desenvolvimento, que aqui chamado de
modelo de desenvolvimento web moderno e ser abordado na prxima seo.
5
Overhead o termo utilizado para descrever o custo excessivo na realizao de uma atividade. Na situao
apresentada no trabalho, significa o excesso de envio de requisies ao servidor web.
6
Reload o termo utilizado para designar a recarga completa de uma pgina.
5
Nesse ambiente, as Single Page Applications (SPA) ganharam espao. A SPA uma
tcnica Web que utiliza uma nica pgina HTML como base para todas as pginas da
aplicao nas quais as interaes do usurio final so implementadas. (FINK; FLATOW,
2014, p. 3). Seu ciclo de vida est ilustrado na Figura 2:
Figura 2: Ciclo de vida da SPA
Nas aplicaes de pgina nica, uma requisio inicial HTTP de abertura da pgina
enviada ao servidor (1), que retorna um documento HTML (2). Este HTML inicial, que nunca
recarregado ou reposto, exibido no navegador e as interaes do usurio so guiadas por
requisies AJAX. (FREEMAN, 2014, p. 46)
Ao invs de recarregar a pgina a cada nova requisio, so feitas requisies AJAX
ao servidor para solicitar os dados necessrios (3), os quais so retornados em JSON ou partes
de HTML pr-renderizadas, que sero atualizadas no Document Object Model (DOM) e
mostradas ao usurio final (4). Outro diferencial das aplicaes de pgina nica que a
transio de pginas realizada no lado cliente da aplicao. (FINK; FLATOW, 2014, p.12)
Portanto, este modelo se difere do tradicional em relao ao overhead de requisies,
tornando a aplicao mais leve e permite melhor usabilidade para o usurio final, devido ao
AJAX no bloquear a manipulao da pgina durante sua execuo. A grande maioria das
SPAs desenvolvida no lado do cliente, em oposio s aplicaes tradicionais que
interagem com o lado servidor e demandam recargas constantes de pginas inteiras. (FINK;
FLATOW, 2014, p. 3)
Dentro deste contexto de desenvolvimento moderno, o AngularJS tem chamado a
ateno por sua leveza e pela facilidade com a qual trabalha os conceitos e os paradigmas do
modelo moderno. A prxima seo exibir os conceitos bsicos do framework, comentando
inicialmente o que ele e posteriormente suas dependncias e sua arquitetura.
6
1.2 AngularJS
A ideia principal que cada mdulo possa conter suas prprias configuraes, rotas e
sua prpria lista de dependncias. Quando o usurio acessa uma determinada URL dentro do
sistema, a rota controlada pelo mdulo carrega na tela o template e o controlador JavaScript
8
responsvel pelo template. Feito isso, o usurio passa a manipular o template gerando troca de
informaes e requisies ao servidor. Esse fluxo de dados representado na Figura 4:
Figura 4: Fluxo de dados em aplicao AngularJS
Na Figura 4, o usurio interage com a view, que est vinculada ao controlador atravs
de diretivas do AngularJS dentro do template carregado no momento do roteamento. Quando
as interaes do usurio resultam em chamadas ao servidor (como salvar dados de um
formulrio), essa ao tratada pelo controller, que utiliza algum service do AngularJS (como
o $http) para abstrair a interao com o server, que retorna os dados conforme a funo
chamada. Estes dados retornados em formato JSON so espelhados no model, que
posteriormente so refletidos na view atravs da tcnica de two-way data binding fornecida
pelo Angular. (STROPEK, 2013)
As subsees seguintes conceituam os componentes que possibilitam a organizao da
aplicao em mdulos e o fluxo de dados descrito atravs da Figura 4.
1.2.1.1 Mdulos
1.2.1.2 Controladores
1.2.1.3 Diretivas
Segundo Branas (2014, p. 18), Uma diretiva uma extenso do vocabulrio HTML
que permite ao desenvolvedor a criao de novos comportamentos. Essa tecnologia permite a
criao de componentes reutilizveis para toda a aplicao, em forma de atributos,
elementos, classes e comentrios. atravs das diretivas que o controlador recebe as aes
geradas pelo usurio, e tambm atravs destas que os dados modificados so espelhados na
viso.
1.2.1.4 Expresses
Segundo Branas (2014, p. 53), Uma expresso uma simples parte de cdigo que
ser avaliada pelo Framework e pode ser escrita entre chaves duplas, como por exemplo
{{teste}}. conhecida como interpolao e permite a fcil interao com qualquer objeto
dentro do scope.. Ainda, a expresso permite a adio de clculos, como {{2 + 2}}, e pode
trabalhar em conjunto aos filtros para transformao da apresentao do contedo na tela.
(BRANAS, 2014, p. 54). atravs das expresses que o Angular mostra os dados presentes
no modelo da aplicao.
10
1.2.1.5 Filtros
Os filtros so usados nas views para formatar os dados apresentados ao usurio. Uma
vez que o filtro definido no mdulo, ele pode ser utilizado por todos os controllers e vises
daquele mdulo. (FREEMAN, 2014, p. 221)
O AngularJS traz filtros built-in (como currency, que recebe um nmero e formata-o
para dlar ou date, que recebe um timestamp e transforma para uma data legvel, segundo
um formato), e tambm permite a criao de filtros personalizados. Basicamente, os filtros
so funes JavaScript que recebem um dado e formatam este dado para ser mostrado na
viso. (FREEMAN, 2014, p. 222)
1.2.1.6 Rotas
1.2.1.7 Servios
2 ESTUDO DE CASO
Fonte: Autor
Com o desenvolvimento do caso de uso, foi possvel analisar a forma como o sistema
fica organizado e como ele pode ser expansvel. A Figura 6 apresenta a organizao dos
diretrios do caso de uso criado:
Fonte: Autor
Com base em tentativas de implementao, foi verificado que o modo ideal deixar o
mdulo principal (app.js) em um diretrio raiz e separar os outros mdulos em subdiretrios
que contm todos os arquivos referentes quele mdulo (templates, arquivos JavaScript,
arquivos de script server-side).
Desta maneira, possvel deixar no mdulo principal as funes cabveis a todos os
mdulos, e nos mdulos filhos, somente as funes especficas de cada um. Isso permite a
incluso de mdulos no sistema sem a necessidade de modificaes nos j existentes,
melhorando a expanso da aplicao e a possibilidade de reutilizao de cdigo.
Fonte: Autor
Fonte: Autor
Toda a vez que realizada alguma modificao na URL (1), o servio $location
percorre todas as rotas configuradas nos mdulos e verifica se alguma condiz com a nova
URL, carregando o template inline ou o template localizado no caminho informado (2). A
implantao de rotas realizada atravs dos mtodos do servio $routeProvider (when, que
indica Quando a URL condizer com e otherwise, que executado caso nenhuma rota
combine com o contedo da URL), incluindo na diretiva ng-view (3), que fica na pgina
principal o template carregado (4).
espelhada na viso. O mesmo ocorre quando algo alterado no modelo: feita a alterao, o
AngularJS j transmite as modificaes camada de viso. Para que isso ocorra, o AngularJS
analisa o template ao carreg-lo, verificando as diretivas e as marcaes inseridas. A partir
disso, o framework produz uma viso ao vivo, atravs da qual ele trabalha para transmitir as
informaes tanto do modelo para a viso quanto da viso para o modelo.
A abstrao que o framework fornece para realizar este tipo de manipulao
automatiza todo o processo de vinculao e sincronizao entre os dados presentes no modelo
com os dados mostrados no template ao usurio final.
Fonte: Autor
Durante a execuo da diretiva dir-paginate no template (1), para cada cliente dentro
da lista de clientes que est no objeto $scope.clientes, o AngularJS submete o atributo
cliente.cli_cpf para o filtro cpf (2). Este, ento, formata o parmetro recebido e retorna ele
formatado, sendo ento exibido na tela. Um detalhe verificado que, em listas muito grandes,
17
h a necessidade de cuidar o uso de filtros que envolvam muito processamento para que estes
no venham a travar a execuo do script.
Fonte: Autor
Foi criado um service com nome Funcoes, que recebe por dependncia outro servio
provido pelo AngularJS chamado $http. O $http executa facilmente chamadas de 4 mtodos
padro do protocolo HTTP: GET, POST, PUT e DELETE. No mtodo GET, basta passar a
URL do recurso solicitado. J no mtodo DELETE, necessrio passar a URL e os
parmetros, caso sejam necessrios. Devido ao PHP no ter arrays especficos para
tratamento de JSON Post e chamadas PUT, necessrio informar o tipo de contedo a ser
18
enviado atravs do parmetro headers. Essa abstrao fornecida pelo AngularJS para
operaes HTTP de grande valia para aplicaes baseadas na arquitetura REST.
aplicao, uma vez que pode ser desabilitado o boto de submisso do formulrio
enquanto este no atingir as regras de validao impostas pelo sistema.
Dadas as avaliaes acima, a experincia de desenvolvimento com o framework
AngularJS foi muito interessante e produtiva. Alm de ser altamente otimizado para
renderizar e vincular dados, o Angular abstrai diversas atividades que nem sempre so
simples de desenvolver ou de controlar.
CONSIDERAES FINAIS
ABSTRACT
The web application development techniques allows developers to constantly improve your
applications and systems and provide better experience to final users. The AngularJS is a
framework that provides function and an architecture that support practically all requirements
in Internet programming environment and therefore is being applied frequently in companies.
This article presents a study of the conceitual part of framework and after presents the
obtained results through a case of use that allow AngularJS evaluation. The developed
prototype for tool evaluation determined a lot of factors that demonstrate the quality and the
results received by AngularJS implementation in Web systems. The final result of evaluation
shows the expected return, because the tool took positive effects in all evaluated points.
REFERNCIAS
FINK, Gil; FLATOW, Ido. Pro Single Page Application Development: Using Backbone.js
and ASP.NET. Nova Iorque: Apress Media LLC.,2014. Disponvel em: <http://www.it-
ebooks.info/book/3692/>. Acesso em 08 nov. 2014.
FREEMAN, Adam. Pro AngularJS. Nova Iorque: Apress Media LLC., 2014. Disponvel
em: <http://it-ebooks.info/book/3847/>. Acesso em: 05 nov. 2014.
OLSSON, Mikael. CSS Quick Syntax Reference. Nova Iorque: Apress Media LLC., 2014.
Disponvel em: <http://www.it-ebooks.info/book/3810/>. Acesso em 08 nov. 2014.
STROPEK, Rainer. AngularJS with TypeScript and Windows Azure Mobile Services,
2013. Disponvel em: <http://goo.gl/O2NENn>. Acesso em 24 mai. 2015.
WELLING, Luke; THOMSON, Laura. PHP and MySQL Web Development. Indianpolis:
Pearson Education, Inc., 2009. Disponvel em: <http://goo.gl/PpxW04>. Acesso em 06 nov.
2014.