angular js com diretivas

11
Arquitetando aplicações com Diretivas em AngularJS por Matheus Lima

Upload: matheus-lima

Post on 13-Apr-2017

325 views

Category:

Software


0 download

TRANSCRIPT

Page 1: Angular js com diretivas

Arquitetando aplicações com Diretivas em AngularJS

por Matheus Lima

Page 2: Angular js com diretivas

Motivação

Reuso

Manutenção

ng-controller

Components são o futuro

Page 3: Angular js com diretivas

Reuso

Paginação com Diretivas:

<pagination pages="pages"></pagination>

Alternativa com controllers:

<div ng-controller="PaginationCtrl">

<div ng-include="'/shared/pagination.html'"></div>

</div>

Page 4: Angular js com diretivas

Manutenção

JavaScript não-obstrusivo não é tão bom quanto pensávamos.

Componentes possuem todo o código no mesmo lugar:

function Pagination() {

return {

restrict: 'E',

template: '<nav>...</nav>',

scope: {

page: '='

}

};

}

Page 5: Angular js com diretivas

ng-controller

1. Compartilhamento de dados

2. Repetição de código

3. Herança

Page 6: Angular js com diretivas

ng-controller

1. Compartilhamento de dados

A forma mais comum usa $scope ou $rootScope (deprecated)

Por não possuir escopo isolado é mais difícil de:

Entender

Manter

Testar

Exemplo no jsfiddle

Page 7: Angular js com diretivas

ng-controller

2. Repetição de código

Justamente por ser difícil o Reuso, o DRY é comprometido

Page 8: Angular js com diretivas

ng-controller

3. Herança

A forma mais comum:

function MyController() {

...

$scope.$parent.invokeMethod();

}Usa $scope e $parent…. JUNTOS

Exemplo no jsfiddle

Page 9: Angular js com diretivas

ng-controller

Portanto:

“Se uma feature de uma linguagem pode ser problemática, e se ela pode ser substituída por outra feature que é mais confiável, então sempre escolha a feature mais confiável.”

- Douglas Crockford

Page 10: Angular js com diretivas

Components são o futuro

Mesmo que você não acredite em nada do que eu falei:

Angular 2

React

Ember

Aurelia

Todos os frameworks estão focando em Components.

Page 11: Angular js com diretivas

Perguntas