Aplicações JS mais simples
Desenvolvedor Frontend com foco na experiência do usuário e entusiasta de tecnologias Frontend, criou a Futuring para ajudar jovens universitários a adentrarem no mercado de trabalho. É um dos Organizadores do GDG Goiânia e em 2013 participou do Google Developer Bus Brasil e criou o Frontend Goiás. Já palestrou em eventos como: Google DevFest Centro-Oeste, Seminário Locaweb, Android Bootcamp, FLISOL e Join Community. Trabalha com AngularJS desde 2013, contribuindo em projetos open-source e na estruturação e arquitetura de diversos projetos goianos que utilizam o framework.
Durante o curso descobriremos por que utilizar o AngularJS, visitaremos os temas recorrentes durante o desenvolvimento de um WebApp e quais são as melhores práticas de desenvolvimento já buscando uma aproximação com o Angular 2.
Trabalhando com imagens
Cadastrando novos contatos
Organizando as informações com abas
O que aprendemos?
Anatomia
Lógica
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>Hello World</title>
</head>
<body>
<div ng-app>
<label for="nome">Nome</label>
<input type="text"
name="nome"
id="nome"
ng-model="varNome"
placeholder="Insira seu nome aqui">
<hr>
<h1>Hello {{varNome}}</h1>
</div>
<script src="http://code.angularjs.org/1.3.15/angular.min.js"></script>
</body>
</html>O AngularJS é uma boa escolha quando se está criando uma aplicação dinâmica que utilize javascript.
Uma API, vários clientes
Um framework javascript client-side para adicionar interatividade ao HTML
<!DOCTYPE html>
<html ng-app="agenda">
<head>
<meta charset="utf-8">
<title>Agenda</title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
</head>
<body>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="app.js"></script>
</body>
</html>var app = = angular.module('agenda', [ ]);app.js
index.html
<!DOCTYPE html>
<html ng-app="agenda">
<head>
<meta charset="utf-8">
<title>Agenda</title>
<link rel="stylesheet" type="text/css" href="bootstrap.min.css">
</head>
<body>
<div class="container">
{{3 + 4}}
</div>
<script type="text/javascript" src="angular.min.js"></script>
<script type="text/javascript" src="app.js"></script>
</body>
</html>index.html
?
var contato = {
nome: 'Jean Lucas de Carvalho',
email: 'jlcarv@live.com',
telefone: '(62) 8162-1104',
localizacao: {
descricao: 'Casa, Rua Campo Grande',
latitude: 0,
longitude: 0
},
social: {
facebook: 'JeanLucasCarvalho',
twitter: 'JLCarv',
linkedin: null,
github: 'JLCarvalho'
}
};(function(){
var app = angular.module('agenda', []);
app.controller('AgendaController', function($scope){
$scope.contato = {
nome: 'Jean Lucas de Carvalho',
email: 'jlcarv@live.com',
telefone: '(62) 8162-1104',
localizacao: {
descricao: 'Casa, Rua Campo Grande',
latitude: 0,
longitude: 0
},
social: {
facebook: 'JeanLucasCarvalho',
twitter: 'JLCarv',
linkedin: null,
github: 'JLCarvalho'
}
};
});
})()app.js
...
<div class="contatos">
<div class="contato">
<h1>Jean Lucas de Carvalho</h2>
<ul class="contato-info">
<li>
<span>Telefone</span>
<h2>(62) 8162-1104</h2>
</li>
<li>
<span>E-mail</span>
<h2>jeanlucasdecarvalho@gmail.com</h2>
</li>
...
</ul>
</div>
</div>
...index.html
...
<div class="contatos" ng-controller="AgendaController">
<div class="contato">
<h1>{{contato.nome}}</h2>
<ul class="contato-info">
<li>
<span>Telefone</span>
<h2>{{contato.telefone}}</h2>
</li>
<li>
<span>E-mail</span>
<h2>{{contato.email}}</h2>
</li>
...
</ul>
</div>
</div>
...index.html
...
<div class="contatos" ng-controller="AgendaController">
<div class="contato">
...
</div>
</div>
{{contato.nome}}
...index.html
?
...
<div class="contatos" ng-controller="AgendaController">
<div class="contato">
<h1>{{contato.nome}}</h1>
<a href="" class="btn btn-info btn-block btn-lg"
ng-click="varEsconder = !varEsconder">
Exibir Informações
</a>
<ul class="contato-info" ng-show="varEsconder">
...
</ul>
</div>
</div>
...index.html
...
$scope.contatos = [
{
nome: 'Futuring Lab',
email: 'contato@futuring.com.br',
telefone: '(62) 3255-****'
},
{
nome: 'Jean Lucas de Carvalho',
email: 'jlcarv@live.com',
telefone: '(62) 8162-1104'
},
{
nome: 'Rafael Dias Soares',
email: 'rafael_gtt@hotmail.com',
telefone: '(62) 8503-8794'
}
];
...app.js
...
<div class="contatos" ng-controller="AgendaController">
<div class="contato" ng-repeat="contato in contatos">
<h1>{{contato.nome}}</h1>
<a href="" class="btn btn-info btn-block btn-lg"
ng-click="varEsconder = !varEsconder">
Exibir Informações
</a>
<ul class="contato-info" ng-show="varEsconder">
...
</ul>
</div>
</div>
...index.html
Parte 2
...
<h1>{{contato.nome | uppercase}}</h1>
...index.html
Exemplos
Receita de bolo
{{ dado | filtro:opções }}{{'1388123412323' | date:'MM/dd/yyyy @ h:mma'}} // 12/27/2013 @ 12:50AM{{'futuring' | uppercase}} // FUTURING{{'Jean Lucas de Carvalho' | limitTo:8}} // Jean Luc<li ng-repeat="product in store.products | limitTo:3"><li ng-repeat="contato in contatos | orderBy:'-nome'">...
$scope.contatos = [
{
nome: 'Futuring Lab',
email: 'contato@futuring.com.br',
telefone: '(62) 3255-****',
foto: 'https://avatars2.githubusercontent.com/u/1238663'
},
...
];
...app.js
<div class="contato" ng-repeat="contato in contatos">
<h1>{{contato.nome}}</h1>
<img src="{{contato.foto}}" class="img-responsive"/>
...
</div>index.html
O navegador tentará exibir a imagem antes do angular obter o resultado da expressão.
<div class="contato" ng-repeat="contato in contatos">
<h1>{{contato.nome}}</h1>
<img ng-src="{{contato.foto}}" class="img-responsive"/>
...
</div>index.html
Com o ng-src o angular cuidará de exibir a imagem quando a expressão for evaluada.
...
<form class="form" name="novoContato">
<div class="form-group">
<label for="inputNome">Password</label>
<input type="text" class="form-control" id="inputNome" placeholder="Nome">
</div>
<div class="form-group">
<label for="inputTelefone">Telefone</label>
<input type="text" class="form-control" id="inputTelefone" placeholder="Telefone">
</div>
<div class="form-group">
<label for="inputEmail">Email</label>
<input type="email" class="form-control" id="inputEmail" placeholder="Email">
</div>
<button type="submit" class="btn btn-default">Cadastrar</button>
</form>
...index.html
...
<form class="form" name="novoContato" ng-submit="adicionarContato(contato)">
<div class="form-group">
<label for="inputNome">Password</label>
<input type="text" class="form-control" ng-model="contato.nome" id="inputNome" placeholder="Nome">
</div>
<div class="form-group">
<label for="inputTelefone">Telefone</label>
<input type="text" class="form-control" ng-model="contato.telefone" id="inputTelefone" placeholder="Telefone">
</div>
<div class="form-group">
<label for="inputEmail">Email</label>
<input type="email" class="form-control" ng-model="contato.email" id="inputEmail" placeholder="Email">
</div>
<button type="submit" class="btn btn-default">Cadastrar</button>
</form>
...index.html
Parte 3