Angular Jumpstart 9 - Modulos

13

Click here to load reader

description

Curso ministrado por mim na NDDigital sobre como iniciar uma aplicação AngularJS direcionada ao consumo de WebAPI, baseado neste fluxo: https://www.examtime.com/pt-BR/p/1084807 ::Table of Contents 1 - Introdução http://pt.slideshare.net/anisanwesley/angular-jumpstart-1-introduo-38460785 2 - Arquitetura http://pt.slideshare.net/anisanwesley/angular-jumpstart-2-arquitetura 3 - Controllers http://pt.slideshare.net/anisanwesley/angular-jumpstart-3-controllers 4 - Diretivas nativas http://pt.slideshare.net/anisanwesley/angular-jumpstart-4-diretivas-nativas 5 - Diretivas customizadas http://pt.slideshare.net/anisanwesley/angular-jumpstart-5-diretivas-customizadas 6 - Filters http://pt.slideshare.net/anisanwesley/angular-jumpstart-6-filters 7 - Validação http://pt.slideshare.net/anisanwesley/angular-jumpstart-7-validao 8 - Services http://pt.slideshare.net/anisanwesley/angular-jumpstart-8-services 9 - Modulos http://pt.slideshare.net/anisanwesley/angular-jumpstart-9-modulos 10 - Requests http://pt.slideshare.net/anisanwesley/angular-jumpstart-10-requests 11 - Roteamento http://pt.slideshare.net/anisanwesley/angular-jumpstart-11-roteamento

Transcript of Angular Jumpstart 9 - Modulos

Page 1: Angular Jumpstart   9 - Modulos

Modulos

Page 2: Angular Jumpstart   9 - Modulos

Web Browser

ASP.NETAngularJS

Class LibraryBusiness

Index.htmlAppModule

RoutesDirectivies

TemplatesViews

ControllerViewModel

ServicesFactories

Repository

BreezeJS$resource$http

WebAPI

ApiController Services

Page 3: Angular Jumpstart   9 - Modulos

ModulosDefinição

AngularJs• Modulos

C#• Projeto

s

Java• Pacote

s

Vantagens

Evitar conflitos globais

Melhora entendimento e organização do

código

Mais fácil encontrar erros

Praticidade na integração com

terceirosCada modulo pode ter seus próprios controllers, services, providers, filtros e diretivas

Page 4: Angular Jumpstart   9 - Modulos

ModulosImplementação

 var app = angular.module('modulo.principal', ['modulo.secundario', 'outro.modulo']), app2 = angular.module('modulo.independente', []);

var app = angular.module('modulo.principal');

Registrar

Recuperar

Nome de módulos “lower.case” separados por pontos. Ex: “controllers.module”

Page 5: Angular Jumpstart   9 - Modulos

Modulos

Como tudo deve ser registrado em módulos, é perigoso que estes sejam declarados como variáveis globais

Por isso é indicado utilizar o padrão IIFE (Immediately-Invoked Function Expression) para fazer qualquer ação que envolva modulos

Bons modos

var app = angular.module('core.module',[]);delete app;

(function () {     //set modulo     angular.module("core.module", []); })(); (function () {      //get modulo      var app = angular.module("core.module");      app.controller('...'); })();

Page 6: Angular Jumpstart   9 - Modulos

ModulosFases da aplicação

Providers

Constants

Execução

Values

Diretivas

Factories

Services

Controllers

Filters

A maioria das aplicações contem um método que instancia todas as partes do sistema antes de começar a execuçãoJavascript não tem isso, mas o Angular pode simular este comportamento dividindo o código em duas fases no mínimo, para cada módulo:

Tempo de configuraçãoApenas providers e constants entram em ação

Tempo de execuçãoControllers, values, services, filters, diretivas podem agir agora

Page 7: Angular Jumpstart   9 - Modulos

Modulos

Config

Run

Fases da aplicação

app.config(function(testeProvider) {         });

app.config(['testeProvider',function(testeProvider) {                    }]);

function configFunction(testeProvider) { }configFunction.$inject = ['testeProvider'];        app.config(configFunction);

Config() é a ultima coisa que roda antes de inicializarRun() é a primeira coisa que roda após inicializar, já fazendo parte da fase de execução

Page 8: Angular Jumpstart   9 - Modulos

Modulos

Várias coisas podem ser registradas em módulos:

Registros

(function () {     var app = angular.module("app");     app.constant('const', { });     app.value('val', { });     app.controller('ctrl', function () { });     app.service('serv', function () { });     app.factory('fact', function () { });     app.provider('prov', function () { }); })();

Page 9: Angular Jumpstart   9 - Modulos

Modulos

São simples objetos que podem ser injetados em tempo de execução, ou seja, services e controllers e factories.

Registros - values

app.value('USER_METADATA', {        role: 'admin',    });

app.controller('controller', function (USER_METADATA) {      });    

Nome de values e constants em “UPPER_CASE” com underline. Ex: “APP_ROUTES”

Page 10: Angular Jumpstart   9 - Modulos

Modulos

Têm a mesma função dos values, mas só podem ser chamados em tempo de configuração

Registros - constants

app.constant('HTTP_HEADER', {        Accept: "text/javascript",        'Content-Type': "text/javascript",        Authorization: "Basic hGdi8Jsk03rpdlMjJ9390ksGWQ0"    });

app.provider('prov', function (HTTP_HEADER, $httpProvider) {        this.$get = function() {            return $httpProvider.default.headers.get=HTTP_HEADER;        };    });

App_routes

Page 11: Angular Jumpstart   9 - Modulos

ModulosRegistros - Providers

app.provider('nome', function (){this.$get=function (){}});configFunction.$inject = ['nomeProvider'];

Definição São services

Apenas em fase de

configuração

Nome + “Provider

”$get()

UsosRoteament

oCabeçalhos

Configurações

Page 12: Angular Jumpstart   9 - Modulos

ModulosOrdem de execução

<div ng-app="my.app" ng-controller="myCtrl">     <div test1 test2> </div></div>

var myApp = angular.module('myApp', []); myApp.factory('aProvider', function () {     console.log("factory"); }); myApp.directive("test1", function () {     console.log("configuração das diretivas");     return {}; }); myApp.provider('myProv',function(myConst) {     console.log("my provider");     this.$get = function() { return; }; }); myApp.constant('myConst', (function() {     console.log('my constant');return "c"; })()); myApp.directive("test2", function () {     return {         link: function() { console.log("link da diretiva"); }     }; }); myApp.run(function () {     console.log("app run"); }); myApp.config(function (myProvProvider) {     console.log("app config"); }); myApp.controller('myCtrl', function ($scope,myServ) {     console.log("app controller"); }); myApp.service('myServ', function () {     console.log("app service"); });

Page 13: Angular Jumpstart   9 - Modulos

Wesley A.LemosLages/SC - 2014