Académique Documents
Professionnel Documents
Culture Documents
Novatec
Authorized Portuguese translation of the English edition of titled Learning AngularJS, ISBN 9781491916759
2015 Ken Williamson. This translation is published and sold by permission of O'Reilly Media, Inc.,
the owner of all rights to publish and sell the same.
Traduo em portugus autorizada da edio em ingls da obra Learning AngularJS, ISBN 9781491916759
2015 Ken Williamson. Esta traduo publicada e vendida com a permisso da O'Reilly Media, Inc.,
detentora de todos os direitos para publicao e venda desta obra.
Novatec Editora Ltda. [2015].
Todos os direitos reservados e protegidos pela Lei 9.610 de 19/02/1998. proibida a reproduo desta
obra, mesmo parcial, por qualquer processo, sem prvia autorizao, por escrito, do autor e da Editora.
Editor: Rubens Prates
Traduo: Lcia A. Kinoshita
Reviso gramatical: Mari Kumagai
Assistente editorial: Priscila A. Yoshimatsu
Editorao eletrnica: Carolina Kuwabata
ISBN: 978-85-7522-430-4 IG20150423
Histrico de impresses:
Maio/2015
Primeira edio
captulo 1
Introduo ao AngularJS
O AngularJS do Google um framework JavaScript MVC (Model-View-Controller, ou Modelo-Viso-Controlador) completo, que facilita bastante
a criao rpida de aplicaes que executem adequadamente em qualquer
plataforma desktop ou mvel. Em um perodo de tempo muito curto, o
AngularJS passou de uma opo de cdigo aberto desconhecida para um
dos frameworks JavaScipt do lado cliente mais conhecido e mais amplamente utilizado. O AngularJS 1.3 e as verses mais recentes, combinados
com a jQuery e o Twitter Bootstrap, oferecem tudo que necessrio para
implementar rapidamente frontends HTML5 de aplicaes JavaScript
que usem web services REST para os processos em backend. Este livro
mostrar como usar todos os trs componentes do frontend para ter
domnio sobre a eficcia dos servios REST no backend e implementar
rapidamente aplicaes mveis e desktop eficientes.
21
Servio
REST
Controlador
22
Introduo ao AngularJS
Aplicao single-page
O AngularJS usado com mais frequncia para criar aplicaes que
estejam de acordo com o conceito de SPA (Single-Page Application). As
SPAs so aplicaes que tm somente uma pgina HTML como ponto
de entrada; todo o contedo da aplicao adicionado e removido dinamicamente dessa pgina nica. Voc pode ver o ponto de entrada de
nossa SPA no cdigo de index.html que se segue. A tag <div ng-view></div>
o local em que todo o contedo dinmico ser inserido em index.html:
<!-- chapter1/index.html -->
<!DOCTYPE html>
<html lang="en" ng-app="helloWorldApp">
<head>
<title>AngularJS Hello World</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<script
<script
<script
<script
src="js/libs/angular.min.js"></script>
src="js/libs/angular-route.min.js"></script>
src="js/libs/angular-resource.min.js"></script>
src="js/libs/angular-cookies.min.js"></script>
<script src="js/app.js"></script>
<script src="js/controllers.js"></script>
<script src="js/services.js"></script>
</head>
<body>
<div ng-view></div>
</body>
</html>
23
Bootstrapping da aplicao
Bootstrapping (inicializao) do AngularJS o processo de carregar o
AngularJS quando uma aplicao iniciada. Carregar as bibliotecas do
AngularJS em uma pgina dar incio ao processo de bootstrap. O arquivo index.html ser analisado e o parser procurar a tag ng-app. A linha
<html lang="en" ng-app="helloWorldApp"></html> mostra como ng-app est definida. O cdigo a seguir apresenta o JavaScript iniciado por essa linha no
arquivo index.html. Como podemos ver, app.js o local em que a aplicao
AngularJS helloWorldApp est definida como um mdulo do AngularJS, e
esse o ponto de entrada da aplicao. A varivel helloWorldApp nesse arquivo
poderia ter qualquer nome.Entretanto vou cham-la de helloWorldApp por
questes de uniformidade:
/* excerto de chapter1/app.js */
'use strict';
/* Mdulo da aplicao */
var helloWorldApp = angular.module('helloWorldApp', [
'ngRoute',
'helloWorldControllers'
]);
24
Introduo ao AngularJS
Rotas no AngularJS
As rotas no AngularJS so definidas por meio da API $routeProvider. As
rotas so dependentes do mdulo ngRoute, e por isso que esse mdulo
um requisito quando a aplicao iniciada. O cdigo de app.js a seguir
mostra como definimos as rotas em uma aplicao AngularJS. Duas rotas
esto definidas a primeira / e a segunda /show:
25
/* excerto de chapter1/app.js */
helloWorldApp.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider){
$routeProvider.
when('/', {
templateUrl: 'partials/main.html',
controller: 'MainCtrl' }).
when('/show', {
templateUrl: 'partials/show.html',
controller: 'ShowCtrl'
});
Modo HTML5
O arquivo app.js completo ser mostrado a seguir. A ltima linha em
app.js ($locationProvider.html5Mode(false).hashPrefix('!');) utiliza o servio
locationProvider. Essa linha de cdigo desabilita o modo HTML5 e habilita o
modo hashbang do AngularJS. Se voc habilitar o modo HTML5 passando
true, a aplicao usar a API HTML5 History. O modo HTML5 tambm oferece URLs elegantes aplicao, como /nomeDeAlgumaApp/blogPost/5 no lugar dos URLs padres do AngularJS como /nomeDeAlgumaApp/#!/blogPost/5
que usam o #!, conhecido como hashbang.
/* Arquivo chapter1/app.js completo */
'use strict';
/* Mdulo da aplicao */
var helloWorldApp = angular.module('helloWorldApp', [
'ngRoute',
'helloWorldControllers'
26
Introduo ao AngularJS
]);
helloWorldApp.config(['$routeProvider', '$locationProvider',
function($routeProvider, $locationProvider) {
$routeProvider.
when('/', {
templateUrl: 'partials/main.html',
controller: 'MainCtrl'
}).when('/show', {
templateUrl: 'partials/show.html',
controller: 'ShowCtrl'
});
$locationProvider.html5Mode(false).hashPrefix('!');
}]);
27
Templates do AngularJS
As parciais (partials) do AngularJS, tambm chamadas de templates,
so sees de cdigo que contm cdigo HTML associado tag
<div ng-view></div></div> mostrada no arquivo index.html anteriormente neste captulo. Se voc observar o arquivo app.js completo novamente, poder
ver que valores diferentes de templateUrl esto definidos para cada rota.
Os arquivos main.html e show.html listados a seguir mostram as duas parciais definidas (templates). Os templates contm somente cdigo HTML
e no tm nada em especial por enquanto. Mais tarde, usaremos a linguagem integrada de templates do AngularJS para exibir dados dinmicos
em nossos templates:
<!-- chapter1/main.html -->
<div>Hello World</div>
<!-- chapter1/show.html -->
<div>Show The World</div>
28
Introduo ao AngularJS
29
30
Introduo ao AngularJS
helloWorldControllers.controller('ShowCtrl', ['$scope',
function ShowCtrl($scope) {
$scope.message = "Show The World";
}]);
Como podemos ver, estamos usando o modelo para preencher as mensagens a serem exibidas nos templates. O cdigo a seguir mostra os templates
modificados que usam os valores do modelo recm-criados. A linha
$scope.message = "Hello World" no controlador MainCtrl usada para criar uma
propriedade chamada message, adicionada ao escopo (que armazena os atributos do modelo). Ento usamos a marcao com chaves duplas ({{}}) no
template main.html para obter acesso e exibir o valor atribudo a $scope.message:
<!-- chapter1/main.html -->
<div>{{message}}</div>
31
Adicionar um novo carrinho de compras do AngularJS em uma aplicao Java existente um bom exemplo a ser considerado. A aplicao Java
existente poderia estar implementada com o framework Spring e usar o
Spring MVC como framework web. Adicionar um carrinho de compras
implementado em Java usando o Spring MVC pode ser um processo
demorado. Isso, porm, no o que ocorre com o AngularJS.
Voc pode criar um carrinho de compras rapidamente com o AngularJS
e ter o cdigo pronto para funcionar em algumas horas, integrando
facilmente o carrinho na aplicao Java existente. Ser possvel no s
criar o carrinho de compras como tambm adicionar testes de unidade
rapidamente para aumentar a cobertura do cdigo testado e reduzir os
defeitos da aplicao. O AngularJS foi concebido para ser testvel desde
o incio; esse um dos recursos fundamentais do AngularJS e um dos
motivos principais para selecion-lo em relao a outros frameworks
JavaScript do lado cliente. Discutiremos mais sobre os testes de aplicaes
AngularJS na prxima seo.
32
Introduo ao AngularJS
Concluso
Discutiremos modelos, vises e controladores com mais detalhes nos
prximos captulos, usando esses componentes para criar aplicaes funcionais que demonstrem a eficcia do AngularJS. Mostraremos como todos
os trs componentes funcionam em conjunto para simplificar a tarefa de
criar aplicaes JavaScript do lado cliente. Tambm discutiremos a criao
de testes de unidade e de testes fim a fim para aplicaes AngularJS.
O captulo 2 focar em ajudar voc a configurar um ambiente de desenvolvimento para HTML5. Tambm faremos download das verses mais
recentes do AngularJS, da jQuery e do Twitter Bootstrap, e as adicionaremos ao nosso projeto de exemplo.