SlideShare ist ein Scribd-Unternehmen logo
1 von 56
Downloaden Sie, um offline zu lesen
carregando...
levante a mão!
<angular-js ng-talk="meet2brains"/>
HTML
              <html>

   <form>         <title>
                          <tr>
           <ul>
<span>            <option>
                           <td>
            <input>
 <a>
           <br>      <em>   <table>
<script>
            <strong>    <legend>
  <div>
    <select>           <button>
             <textarea>
<html>               <video>
                                                     <header>
   <form>         <title>
                          <tr>           <canvas>
           <ul>
<span>            <option>
                           <td>                         <audio>
            <input>
 <a>
           <br>      <em>                <section>
<script>                    <table>
                                                        <meter>
            <strong>    <legend>
  <div>                                   <menu>
    <select>           <button>                      <hgroup>
             <textarea>               <progress>
<ng-view>                   <ng-switch>


                  <html>               <video>
                                                     <header>
   <form>         <title>
                          <tr>           <canvas>
           <ul>
<span>            <option>
                           <td>                          <audio>
            <input>
 <a>
           <br>      <em>                <section>
<script>                    <table>
                                                         <meter>
            <strong>    <legend>
  <div>                                   <menu>
    <select>           <button>                      <hgroup>
             <textarea>               <progress>


             <minha-tag>                           ng-model=""
<body ng-app>
                                platéia
  <input ng-model="nome">

  <p>Olá, {{nome}}!</p>         Olá, platéia!
  <script href="angular.js"/>

</body>
<body ng-app>

  <input ng-model="nome">

  <p>Olá, {{nome}}!</p>

  <script href="angular.js"/>

</body>
<body ng-app>

  <input ng-model="nome">

  <p>Olá, {{nome}}!</p>

  <script href="angular.js"/>

</body>
<body ng-app>

  <input ng-model="nome">

  <p>Olá, {{nome}}!</p>

  <script href="angular.js"/>

</body>
mas... e   o   CONTROLLER?
function SorteadorController($scope) {

    $scope.numero = 0;

    $scope.sortearNumero = function () {
       $scope.numero =
          Math.floor(Math.random() * 100);
    };

}




                          sorteador-controller.js
<body ng-app>

  <div ng-controller="SorteadorController">

     <button ng-click="sortearNumero()">
       fazer sorteio!
     </button>

     <p>O número sorteado foi: {{numero}}</p>

  </div>

  <script href="angular.js"/>
  <script href="sorteador-controller.js"/>

</body>
<body ng-app>

  <div ng-controller="SorteadorController">

     <button ng-click="sortearNumero()">
       fazer sorteio!
     </button>

     <p>O número sorteado foi: {{numero}}</p>

  </div>

  <script href="angular.js"/>
  <script href="sorteador-controller.js"/>

</body>
<body ng-app>

  <div ng-controller="SorteadorController">

     <button ng-click="sortearNumero()">
       fazer sorteio!
     </button>

     <p>O número sorteado foi: {{numero}}</p>

  </div>

  <script href="angular.js"/>
  <script href="sorteador-controller.js"/>

</body>
<body ng-app>

  <div ng-controller="SorteadorController">

     <button ng-click="sortearNumero()">
       fazer sorteio!
     </button>

     <p>O número sorteado foi: {{numero}}</p>

  </div>

  <script href="angular.js"/>
  <script href="sorteador-controller.js"/>

</body>
MVC
MVC
$scope.model = {
   id: 1,
   nome: 'Farfinhos',
   idade: 18
};
MVC
<ul>

  <li ng-repeat="usuario in usuarios">
    {{usuario.id}} - {{usuario.nome}}
  </li>

</ul>
MVC
function Controller($scope) {

    $scope.model = { ... };

    $scope.handlerClick =
         function () { ... };
}
APP
APP   Controller
Serviço




APP   Controller
Serviço




APP   Controller




       <view>
Serviço




APP   Controller




       <view>
        filters
Como usar isso tudo para montar uma
      aplicação single-page?
cria-se uma aplicação...
window.appTalk = angular.module('appTalk', []);
window.appTalk = angular.module('appTalk', []);




  <div ng-app="appTalk">
    ...
  </div>
cria-se controllers...
window.appTalk
   .controller('SobreController', [
     '$scope',
     function ($scope){

        ... código do controller ...

    }
  ]);
cria-se serviços...
window.appTalk
   .service('ServicoNecessario',
     function (){

       this.funcionalidade = function ()
  {...};

       ... código do serviço ...


     });
cria-se templates...
<div>
  Detalhes sobre {{nome}}: <br>
  {{info}}
</div>
configura-se as rotas...
window.appTalk = angular
   .module('appTalk', [])
   .config(['$routeProvider',
     function ($routeProvider) {
        $routeProvider
        .when('/sobre', {
           templateUrl: 'sobre.html',
           controller: 'SobreController'
        })
        .when('/home', {
           templateUrl: 'home.html',
           controller: 'HomeController'
        })
        .otherwise({redirectTo: '/home});
   }]);
window.appTalk = angular
   .module('appTalk', [])
   .config(['$routeProvider',
     function ($routeProvider) {
        $routeProvider
        .when('/sobre', {
           templateUrl: 'sobre.html',
           controller: 'SobreController'
        })
        .when('/home', {
           templateUrl: 'home.html',
           controller: 'HomeController'
        })
        .otherwise({redirectTo: '/home});
   }]);
window.appTalk = angular
   .module('appTalk', [])
   .config(['$routeProvider',
     function ($routeProvider) {
        $routeProvider
        .when('/sobre', {
           templateUrl: 'sobre.html',
           controller: 'SobreController'
        })
        .when('/home', {
           templateUrl: 'home.html',
           controller: 'HomeController'
        })
        .otherwise({redirectTo: '/home});
   }]);
window.appTalk = angular
   .module('appTalk', [])
   .config(['$routeProvider',
     function ($routeProvider) {
        $routeProvider
        .when('/sobre', {
           templateUrl: 'sobre.html',
           controller: 'SobreController'
        })
        .when('/home', {
           templateUrl: 'home.html',
           controller: 'HomeController'
        })
        .otherwise({redirectTo: '/home});
   }]);
e o DOM?
daqui pra frente,
a mágica desaparece
diretiva
Serviço




APP               Controller

      diretivas

                   <view>
                    filters
Serviço




APP               Controller

      diretivas      scope



                   <view>
                    filters
Serviço

       $injector



APP                Controller

      diretivas

                    <view>
                     filters
E - Elemento:
   <my-directive></my-directive>

A - Atributo:
   <div my-directive="exp"> </div>

C - Classe:
   <div class="my-directive: exp;"></div>

M - Comentário:
   <!-- directive: my-directive exp -->
<DOM>
<DOM>



COMPILE
<DOM>



COMPILE


 LINK
<DOM>



COMPILE


 LINK
window.appTalk.directive(
    'directiveName', function factory(injectables) {
 var definicaoDeDiretiva = {
   priority: 0,
    template: '<div></div>',
   templateUrl: 'directive.html',
   replace: false,
   transclude: false,
   restrict: 'A',
   scope: false,
   compile: function compile(tElement, tAttrs, transclude) {
       return {
         pre: function preLink() { ... },
         post: function postLink() { ... }
       }
    },
   link: function postLink(scope, iElement, iAttrs) { ... }
 };

 return definicaoDeDiretiva;
});
leaky abstraction
Obrigado!
mas espere...


        Henrique Netto
cursosdante
@gmail.com


       Henrique Netto

Weitere ähnliche Inhalte

Was ist angesagt?

Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHPigorpimentel
 
Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Ricardo Longa
 
Autenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandAutenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandDouglas Lira
 
Da introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento AndroidDa introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento AndroidRicardo Longa
 
Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Jaime Schettini
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJSRodrigo Branas
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroEduardo Shiota Yasuda
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsComunidade NetPonto
 
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Fernando Freitas Alves
 
O Poderoso AngularJS
O Poderoso AngularJSO Poderoso AngularJS
O Poderoso AngularJSBeto Muniz
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSRodrigo Branas
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoFreedom DayMS
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasRodrigo Branas
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoCezinha Anjos
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontMichel Ribeiro
 

Was ist angesagt? (20)

Introdução ao framework CakePHP
Introdução ao framework CakePHPIntrodução ao framework CakePHP
Introdução ao framework CakePHP
 
Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)Aula 17 04 (Exercícios e ScrollView)
Aula 17 04 (Exercícios e ScrollView)
 
Autenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemandAutenticação com AngularJS e loadOnDemand
Autenticação com AngularJS e loadOnDemand
 
Da introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento AndroidDa introdução à prática no desenvolvimento Android
Da introdução à prática no desenvolvimento Android
 
Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007Conhecendo o Struts 2 - Java Tech Day 2007
Conhecendo o Struts 2 - Java Tech Day 2007
 
Automação de Testes com AngularJS
Automação de Testes com AngularJSAutomação de Testes com AngularJS
Automação de Testes com AngularJS
 
Design Patterns em Ruby
Design Patterns em RubyDesign Patterns em Ruby
Design Patterns em Ruby
 
Criando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zeroCriando uma arquitetura de front-end do zero
Criando uma arquitetura de front-end do zero
 
Scope AngularJS
Scope AngularJSScope AngularJS
Scope AngularJS
 
Case studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store AppsCase studies about Layout & View States & Scale in Windows 8 Store Apps
Case studies about Layout & View States & Scale in Windows 8 Store Apps
 
Asp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 PtAsp.Net Mvc Dev Days09 V3 Pt
Asp.Net Mvc Dev Days09 V3 Pt
 
Facelets
FaceletsFacelets
Facelets
 
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
Apresentação sobre Bootstrap na Maratona de Inovação ISITEC 2017
 
O Poderoso AngularJS
O Poderoso AngularJSO Poderoso AngularJS
O Poderoso AngularJS
 
Vue.js
Vue.jsVue.js
Vue.js
 
Criando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJSCriando aplicações Single-Page com AngularJS
Criando aplicações Single-Page com AngularJS
 
Aplicações rápidas para a Web com Django
Aplicações rápidas para a Web com DjangoAplicações rápidas para a Web com Django
Aplicações rápidas para a Web com Django
 
Node.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo BranasNode.js - #6 - Core Modules - net - Rodrigo Branas
Node.js - #6 - Core Modules - net - Rodrigo Branas
 
RubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direitoRubyConfBr 2015 - Rails & Javascript: faça isso direito
RubyConfBr 2015 - Rails & Javascript: faça isso direito
 
Evento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de FrontEvento Front End SP - Arquitetura de Front
Evento Front End SP - Arquitetura de Front
 

Andere mochten auch

ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAWilson Mendes
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Rodrigo Branas
 
Pengertian algoritma lengkap by.artayahonest
Pengertian algoritma lengkap by.artayahonestPengertian algoritma lengkap by.artayahonest
Pengertian algoritma lengkap by.artayahonestArtaya Honest
 
Best Italian Wedding Venues & Planner
Best Italian Wedding Venues & Planner Best Italian Wedding Venues & Planner
Best Italian Wedding Venues & Planner Alysha Nieol
 
Grammar book for spanish
Grammar book for spanishGrammar book for spanish
Grammar book for spanishannpear
 
T ugas 7 daya guna website dengan blog-artayahonest-imk
T ugas 7 daya guna website dengan blog-artayahonest-imkT ugas 7 daya guna website dengan blog-artayahonest-imk
T ugas 7 daya guna website dengan blog-artayahonest-imkArtaya Honest
 
Només tenim una oportunitat
Només tenim una oportunitatNomés tenim una oportunitat
Només tenim una oportunitatCulturaPractica
 
Ringkasan ramayana by artaya honest
Ringkasan ramayana by artaya honestRingkasan ramayana by artaya honest
Ringkasan ramayana by artaya honestArtaya Honest
 
Persentasi Desain Web-Pariwisata UNUD 2013
Persentasi Desain Web-Pariwisata UNUD 2013Persentasi Desain Web-Pariwisata UNUD 2013
Persentasi Desain Web-Pariwisata UNUD 2013Artaya Honest
 
Proposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestProposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestArtaya Honest
 
GMIA - increasing you online digital music sales
GMIA - increasing you online digital music salesGMIA - increasing you online digital music sales
GMIA - increasing you online digital music salesGMIA
 
windows App development
windows App developmentwindows App development
windows App developmentAlysha Nieol
 
Photoshop design to xhtml
Photoshop design to xhtmlPhotoshop design to xhtml
Photoshop design to xhtmlMatt Stevens
 
Manajemen jaringan server c kelompok 4-artayahonest
Manajemen jaringan server c   kelompok 4-artayahonestManajemen jaringan server c   kelompok 4-artayahonest
Manajemen jaringan server c kelompok 4-artayahonestArtaya Honest
 
Grammar book
Grammar bookGrammar book
Grammar bookconnkirk
 
Grammar book 2
Grammar book 2Grammar book 2
Grammar book 2annpear
 
Proposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestProposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestArtaya Honest
 
Simply me! --edu1103
Simply me!  --edu1103Simply me!  --edu1103
Simply me! --edu1103BrieHoover
 
traffic attorney Austin
traffic attorney Austintraffic attorney Austin
traffic attorney AustinAlysha Nieol
 
Occupational drivers license austin 
Occupational drivers license austin Occupational drivers license austin 
Occupational drivers license austin Alysha Nieol
 

Andere mochten auch (20)

ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDAANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
ANGULARJS: UM FRAMEWORK PARA FACILITAR SUA VIDA
 
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
Minicurso - Desenvolvendo aplicações web com JavaScript e AngularJS - Estácio...
 
Pengertian algoritma lengkap by.artayahonest
Pengertian algoritma lengkap by.artayahonestPengertian algoritma lengkap by.artayahonest
Pengertian algoritma lengkap by.artayahonest
 
Best Italian Wedding Venues & Planner
Best Italian Wedding Venues & Planner Best Italian Wedding Venues & Planner
Best Italian Wedding Venues & Planner
 
Grammar book for spanish
Grammar book for spanishGrammar book for spanish
Grammar book for spanish
 
T ugas 7 daya guna website dengan blog-artayahonest-imk
T ugas 7 daya guna website dengan blog-artayahonest-imkT ugas 7 daya guna website dengan blog-artayahonest-imk
T ugas 7 daya guna website dengan blog-artayahonest-imk
 
Només tenim una oportunitat
Només tenim una oportunitatNomés tenim una oportunitat
Només tenim una oportunitat
 
Ringkasan ramayana by artaya honest
Ringkasan ramayana by artaya honestRingkasan ramayana by artaya honest
Ringkasan ramayana by artaya honest
 
Persentasi Desain Web-Pariwisata UNUD 2013
Persentasi Desain Web-Pariwisata UNUD 2013Persentasi Desain Web-Pariwisata UNUD 2013
Persentasi Desain Web-Pariwisata UNUD 2013
 
Proposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestProposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonest
 
GMIA - increasing you online digital music sales
GMIA - increasing you online digital music salesGMIA - increasing you online digital music sales
GMIA - increasing you online digital music sales
 
windows App development
windows App developmentwindows App development
windows App development
 
Photoshop design to xhtml
Photoshop design to xhtmlPhotoshop design to xhtml
Photoshop design to xhtml
 
Manajemen jaringan server c kelompok 4-artayahonest
Manajemen jaringan server c   kelompok 4-artayahonestManajemen jaringan server c   kelompok 4-artayahonest
Manajemen jaringan server c kelompok 4-artayahonest
 
Grammar book
Grammar bookGrammar book
Grammar book
 
Grammar book 2
Grammar book 2Grammar book 2
Grammar book 2
 
Proposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonestProposaldesain web.imk artayahonest
Proposaldesain web.imk artayahonest
 
Simply me! --edu1103
Simply me!  --edu1103Simply me!  --edu1103
Simply me! --edu1103
 
traffic attorney Austin
traffic attorney Austintraffic attorney Austin
traffic attorney Austin
 
Occupational drivers license austin 
Occupational drivers license austin Occupational drivers license austin 
Occupational drivers license austin 
 

Ähnlich wie Angular JS, você precisa conhecer

Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkPablo Dall'Oglio
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o JavascriptMichel Ribeiro
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.jsGiovanni Bassi
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBLuciano Borges
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Luis Gustavo Almeida
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfGabrielaMota46
 
Simplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaSimplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaMarianna Cruz Teixeira
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOLgrupoweblovers
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantesEduardo Mendes
 
jQuery - Visão Geral
jQuery - Visão GeraljQuery - Visão Geral
jQuery - Visão GeralKaio Valente
 
Android com estilo - GDG Dev Fest 2015
Android com estilo - GDG Dev Fest 2015Android com estilo - GDG Dev Fest 2015
Android com estilo - GDG Dev Fest 2015Nathalie Lima
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosRodrigo Nossal
 

Ähnlich wie Angular JS, você precisa conhecer (20)

Angular js
Angular jsAngular js
Angular js
 
Aplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com DjangoAplicacoes Rapidas Para Web Com Django
Aplicacoes Rapidas Para Web Com Django
 
Programação Web com jQuery
Programação Web com jQueryProgramação Web com jQuery
Programação Web com jQuery
 
Programando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um FrameworkProgramando para programadores: Desafios na evolução de um Framework
Programando para programadores: Desafios na evolução de um Framework
 
Evento Front End SP - Organizando o Javascript
 Evento Front End SP - Organizando o Javascript Evento Front End SP - Organizando o Javascript
Evento Front End SP - Organizando o Javascript
 
LambdaDay: Backbone.js
LambdaDay: Backbone.jsLambdaDay: Backbone.js
LambdaDay: Backbone.js
 
JQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEBJQuery Alagoinhas Dev Day - UNEB
JQuery Alagoinhas Dev Day - UNEB
 
Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017 Mini Curso PHP Twig - PHP Conference 2017
Mini Curso PHP Twig - PHP Conference 2017
 
LPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdfLPII_Aula_7-JQuery.pdf
LPII_Aula_7-JQuery.pdf
 
Simplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na práticaSimplificando o full stack - desenvolvimento web na prática
Simplificando o full stack - desenvolvimento web na prática
 
Play Framework - FLISOL
Play Framework - FLISOLPlay Framework - FLISOL
Play Framework - FLISOL
 
PHP básico para iniciantes
PHP básico para iniciantesPHP básico para iniciantes
PHP básico para iniciantes
 
jQuery - Visão Geral
jQuery - Visão GeraljQuery - Visão Geral
jQuery - Visão Geral
 
Http Servlet
Http ServletHttp Servlet
Http Servlet
 
Android com estilo - GDG Dev Fest 2015
Android com estilo - GDG Dev Fest 2015Android com estilo - GDG Dev Fest 2015
Android com estilo - GDG Dev Fest 2015
 
Django: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutosDjango: Desenvolvendo uma aplicação web em minutos
Django: Desenvolvendo uma aplicação web em minutos
 
Tutorial.yii
Tutorial.yiiTutorial.yii
Tutorial.yii
 
Bread board
Bread boardBread board
Bread board
 
Introdução ao JQuery e AJAX
Introdução ao JQuery e AJAXIntrodução ao JQuery e AJAX
Introdução ao JQuery e AJAX
 
Html, css, js, ajax
Html, css, js, ajaxHtml, css, js, ajax
Html, css, js, ajax
 

Mehr von meet2Brains

Por que minha empresa deve construir um planejamento digital?
Por que minha empresa deve construir um planejamento digital?Por que minha empresa deve construir um planejamento digital?
Por que minha empresa deve construir um planejamento digital?meet2Brains
 
Marketing digital, quem precisa?
Marketing digital, quem precisa?Marketing digital, quem precisa?
Marketing digital, quem precisa?meet2Brains
 
Design sem Designer: como, onde e por que o Design acontece
Design sem Designer: como, onde e por que o Design aconteceDesign sem Designer: como, onde e por que o Design acontece
Design sem Designer: como, onde e por que o Design acontecemeet2Brains
 
Cutesquares: De Cuteland para o mundo
Cutesquares: De Cuteland para o mundoCutesquares: De Cuteland para o mundo
Cutesquares: De Cuteland para o mundomeet2Brains
 
Como ser um bom programador
Como ser um bom programadorComo ser um bom programador
Como ser um bom programadormeet2Brains
 
Programando para o Google Chrome
Programando para o Google ChromeProgramando para o Google Chrome
Programando para o Google Chromemeet2Brains
 
E-commerce: indo além da tecnologia
E-commerce: indo além da tecnologiaE-commerce: indo além da tecnologia
E-commerce: indo além da tecnologiameet2Brains
 
Mídias Sociais não é só Facebook!
Mídias Sociais não é só Facebook!Mídias Sociais não é só Facebook!
Mídias Sociais não é só Facebook!meet2Brains
 
PicPay: uma nova forma de comprar
PicPay: uma nova forma de comprarPicPay: uma nova forma de comprar
PicPay: uma nova forma de comprarmeet2Brains
 
Projetar pensando na experiência do usuário
Projetar pensando na experiência do usuárioProjetar pensando na experiência do usuário
Projetar pensando na experiência do usuáriomeet2Brains
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento  Ágil com Ruby on  RailsDesenvolvimento  Ágil com Ruby on  Rails
Desenvolvimento Ágil com Ruby on Railsmeet2Brains
 
Mobile: o que já está acontecendo e o que é futuro?
Mobile: o que já está acontecendo e o que é futuro?Mobile: o que já está acontecendo e o que é futuro?
Mobile: o que já está acontecendo e o que é futuro?meet2Brains
 
Rock pigeon - do zero até o começo
Rock pigeon - do zero até o começoRock pigeon - do zero até o começo
Rock pigeon - do zero até o começomeet2Brains
 
Métricas Web com Google Analytics: indo muito além das visitas
Métricas Web com Google Analytics: indo muito além das visitasMétricas Web com Google Analytics: indo muito além das visitas
Métricas Web com Google Analytics: indo muito além das visitasmeet2Brains
 
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...meet2Brains
 
Getting Real: conceitos para construir projetos de sucesso
Getting Real: conceitos para construir projetos de sucessoGetting Real: conceitos para construir projetos de sucesso
Getting Real: conceitos para construir projetos de sucessomeet2Brains
 
Desenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmaDesenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmameet2Brains
 
De serviço a produto com uma plataforma de e-commerce
De serviço a produto com uma plataforma de e-commerceDe serviço a produto com uma plataforma de e-commerce
De serviço a produto com uma plataforma de e-commercemeet2Brains
 
WebApps e Frameworks Javascript
WebApps e Frameworks JavascriptWebApps e Frameworks Javascript
WebApps e Frameworks Javascriptmeet2Brains
 
De aprendizado à utilidade pública
De aprendizado à utilidade públicaDe aprendizado à utilidade pública
De aprendizado à utilidade públicameet2Brains
 

Mehr von meet2Brains (20)

Por que minha empresa deve construir um planejamento digital?
Por que minha empresa deve construir um planejamento digital?Por que minha empresa deve construir um planejamento digital?
Por que minha empresa deve construir um planejamento digital?
 
Marketing digital, quem precisa?
Marketing digital, quem precisa?Marketing digital, quem precisa?
Marketing digital, quem precisa?
 
Design sem Designer: como, onde e por que o Design acontece
Design sem Designer: como, onde e por que o Design aconteceDesign sem Designer: como, onde e por que o Design acontece
Design sem Designer: como, onde e por que o Design acontece
 
Cutesquares: De Cuteland para o mundo
Cutesquares: De Cuteland para o mundoCutesquares: De Cuteland para o mundo
Cutesquares: De Cuteland para o mundo
 
Como ser um bom programador
Como ser um bom programadorComo ser um bom programador
Como ser um bom programador
 
Programando para o Google Chrome
Programando para o Google ChromeProgramando para o Google Chrome
Programando para o Google Chrome
 
E-commerce: indo além da tecnologia
E-commerce: indo além da tecnologiaE-commerce: indo além da tecnologia
E-commerce: indo além da tecnologia
 
Mídias Sociais não é só Facebook!
Mídias Sociais não é só Facebook!Mídias Sociais não é só Facebook!
Mídias Sociais não é só Facebook!
 
PicPay: uma nova forma de comprar
PicPay: uma nova forma de comprarPicPay: uma nova forma de comprar
PicPay: uma nova forma de comprar
 
Projetar pensando na experiência do usuário
Projetar pensando na experiência do usuárioProjetar pensando na experiência do usuário
Projetar pensando na experiência do usuário
 
Desenvolvimento Ágil com Ruby on Rails
Desenvolvimento  Ágil com Ruby on  RailsDesenvolvimento  Ágil com Ruby on  Rails
Desenvolvimento Ágil com Ruby on Rails
 
Mobile: o que já está acontecendo e o que é futuro?
Mobile: o que já está acontecendo e o que é futuro?Mobile: o que já está acontecendo e o que é futuro?
Mobile: o que já está acontecendo e o que é futuro?
 
Rock pigeon - do zero até o começo
Rock pigeon - do zero até o começoRock pigeon - do zero até o começo
Rock pigeon - do zero até o começo
 
Métricas Web com Google Analytics: indo muito além das visitas
Métricas Web com Google Analytics: indo muito além das visitasMétricas Web com Google Analytics: indo muito além das visitas
Métricas Web com Google Analytics: indo muito além das visitas
 
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...
Negócios para Desenvolvedores e Designers: abordagens práticas de mercado dig...
 
Getting Real: conceitos para construir projetos de sucesso
Getting Real: conceitos para construir projetos de sucessoGetting Real: conceitos para construir projetos de sucesso
Getting Real: conceitos para construir projetos de sucesso
 
Desenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigmaDesenvolvendo para windows phone, um novo paradigma
Desenvolvendo para windows phone, um novo paradigma
 
De serviço a produto com uma plataforma de e-commerce
De serviço a produto com uma plataforma de e-commerceDe serviço a produto com uma plataforma de e-commerce
De serviço a produto com uma plataforma de e-commerce
 
WebApps e Frameworks Javascript
WebApps e Frameworks JavascriptWebApps e Frameworks Javascript
WebApps e Frameworks Javascript
 
De aprendizado à utilidade pública
De aprendizado à utilidade públicaDe aprendizado à utilidade pública
De aprendizado à utilidade pública
 

Angular JS, você precisa conhecer

  • 4.
  • 5. HTML <html> <form> <title> <tr> <ul> <span> <option> <td> <input> <a> <br> <em> <table> <script> <strong> <legend> <div> <select> <button> <textarea>
  • 6. <html> <video> <header> <form> <title> <tr> <canvas> <ul> <span> <option> <td> <audio> <input> <a> <br> <em> <section> <script> <table> <meter> <strong> <legend> <div> <menu> <select> <button> <hgroup> <textarea> <progress>
  • 7. <ng-view> <ng-switch> <html> <video> <header> <form> <title> <tr> <canvas> <ul> <span> <option> <td> <audio> <input> <a> <br> <em> <section> <script> <table> <meter> <strong> <legend> <div> <menu> <select> <button> <hgroup> <textarea> <progress> <minha-tag> ng-model=""
  • 8. <body ng-app> platéia <input ng-model="nome"> <p>Olá, {{nome}}!</p> Olá, platéia! <script href="angular.js"/> </body>
  • 9. <body ng-app> <input ng-model="nome"> <p>Olá, {{nome}}!</p> <script href="angular.js"/> </body>
  • 10. <body ng-app> <input ng-model="nome"> <p>Olá, {{nome}}!</p> <script href="angular.js"/> </body>
  • 11. <body ng-app> <input ng-model="nome"> <p>Olá, {{nome}}!</p> <script href="angular.js"/> </body>
  • 12. mas... e o CONTROLLER?
  • 13. function SorteadorController($scope) { $scope.numero = 0; $scope.sortearNumero = function () { $scope.numero = Math.floor(Math.random() * 100); }; } sorteador-controller.js
  • 14. <body ng-app> <div ng-controller="SorteadorController"> <button ng-click="sortearNumero()"> fazer sorteio! </button> <p>O número sorteado foi: {{numero}}</p> </div> <script href="angular.js"/> <script href="sorteador-controller.js"/> </body>
  • 15. <body ng-app> <div ng-controller="SorteadorController"> <button ng-click="sortearNumero()"> fazer sorteio! </button> <p>O número sorteado foi: {{numero}}</p> </div> <script href="angular.js"/> <script href="sorteador-controller.js"/> </body>
  • 16. <body ng-app> <div ng-controller="SorteadorController"> <button ng-click="sortearNumero()"> fazer sorteio! </button> <p>O número sorteado foi: {{numero}}</p> </div> <script href="angular.js"/> <script href="sorteador-controller.js"/> </body>
  • 17. <body ng-app> <div ng-controller="SorteadorController"> <button ng-click="sortearNumero()"> fazer sorteio! </button> <p>O número sorteado foi: {{numero}}</p> </div> <script href="angular.js"/> <script href="sorteador-controller.js"/> </body>
  • 18. MVC
  • 19. MVC $scope.model = { id: 1, nome: 'Farfinhos', idade: 18 };
  • 20. MVC <ul> <li ng-repeat="usuario in usuarios"> {{usuario.id}} - {{usuario.nome}} </li> </ul>
  • 21. MVC function Controller($scope) { $scope.model = { ... }; $scope.handlerClick = function () { ... }; }
  • 22. APP
  • 23. APP Controller
  • 24. Serviço APP Controller
  • 25. Serviço APP Controller <view>
  • 26. Serviço APP Controller <view> filters
  • 27. Como usar isso tudo para montar uma aplicação single-page?
  • 30. window.appTalk = angular.module('appTalk', []); <div ng-app="appTalk"> ... </div>
  • 32. window.appTalk .controller('SobreController', [ '$scope', function ($scope){ ... código do controller ... } ]);
  • 34. window.appTalk .service('ServicoNecessario', function (){ this.funcionalidade = function () {...}; ... código do serviço ... });
  • 36. <div> Detalhes sobre {{nome}}: <br> {{info}} </div>
  • 38. window.appTalk = angular .module('appTalk', []) .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/sobre', { templateUrl: 'sobre.html', controller: 'SobreController' }) .when('/home', { templateUrl: 'home.html', controller: 'HomeController' }) .otherwise({redirectTo: '/home}); }]);
  • 39. window.appTalk = angular .module('appTalk', []) .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/sobre', { templateUrl: 'sobre.html', controller: 'SobreController' }) .when('/home', { templateUrl: 'home.html', controller: 'HomeController' }) .otherwise({redirectTo: '/home}); }]);
  • 40. window.appTalk = angular .module('appTalk', []) .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/sobre', { templateUrl: 'sobre.html', controller: 'SobreController' }) .when('/home', { templateUrl: 'home.html', controller: 'HomeController' }) .otherwise({redirectTo: '/home}); }]);
  • 41. window.appTalk = angular .module('appTalk', []) .config(['$routeProvider', function ($routeProvider) { $routeProvider .when('/sobre', { templateUrl: 'sobre.html', controller: 'SobreController' }) .when('/home', { templateUrl: 'home.html', controller: 'HomeController' }) .otherwise({redirectTo: '/home}); }]);
  • 43. daqui pra frente, a mágica desaparece
  • 45. Serviço APP Controller diretivas <view> filters
  • 46. Serviço APP Controller diretivas scope <view> filters
  • 47. Serviço $injector APP Controller diretivas <view> filters
  • 48. E - Elemento: <my-directive></my-directive> A - Atributo: <div my-directive="exp"> </div> C - Classe: <div class="my-directive: exp;"></div> M - Comentário: <!-- directive: my-directive exp -->
  • 49. <DOM>
  • 53. window.appTalk.directive( 'directiveName', function factory(injectables) { var definicaoDeDiretiva = { priority: 0, template: '<div></div>', templateUrl: 'directive.html', replace: false, transclude: false, restrict: 'A', scope: false, compile: function compile(tElement, tAttrs, transclude) { return { pre: function preLink() { ... }, post: function postLink() { ... } } }, link: function postLink(scope, iElement, iAttrs) { ... } }; return definicaoDeDiretiva; });
  • 55. Obrigado! mas espere... Henrique Netto
  • 56. cursosdante @gmail.com Henrique Netto