15
AngularJS SUPERHEROIC JAVASCRIPT MVW FRAMEWORK

Angular JS deep dive

  • Upload
    axilis

  • View
    29

  • Download
    0

Embed Size (px)

Citation preview

Page 1: Angular JS deep dive

AngularJSSUPERHEROIC JAVASCRIPT MVW FRAMEWORK

Page 2: Angular JS deep dive
Page 3: Angular JS deep dive

What is it? Really big JavaScript file

JavaScript MVC framework (or MVW)

HTML syntax extensions<html><script src=“angular.js“></script><script src=“app.js“></script><body ng-app=“myApp" ng-controller=“myController"> <h1>Sta se jede</h1>

<table> <tr ng-repeat=“rest in restaurants"> <td>{{rest.name}}</td> <td>{{rest.score}}</td> </tr> </table></body><html>

angular.module(‘myApp', []).controller(‘myController‘, function($scope) {

$scope.restaurants = [ {name:”Sparka”,score:”4/5” },

{name:”NijeSparka”,score:”3/5” }];});

Page 4: Angular JS deep dive

What is your app made of?◦ Templates◦ Expressions◦ Controllers◦ Model/Scope◦ Modules◦ Services◦ Directives◦ Filters

Page 5: Angular JS deep dive

Templates HTML extended with directives and expressions.

Angular “compiler” renderers DOM aka ”View” for Template.

ng-app minimum for angular to work. <html><script src=“angular.js“></script><script src=“app.js“></script><body ng-app=“myApp" ng-controller=“myController"> <h1>Sta se jede</h1>

<table> <tr ng-repeat=“rest in restaurants"> <td>{{rest.name}}</td> <td>{{rest.score}}</td> </tr> </table></body><html>

Page 6: Angular JS deep dive

Controller and $scope Controller is model/scope constructor

Model != $scope

$scope is an execution context for expressions

$scope functions:◦ $watch◦ $apply

Page 7: Angular JS deep dive

Modules Reusable container of app features.

Info about all other modules that this module depends on.

Angular injector is responsible for construction and lookup of dependencies.

Page 8: Angular JS deep dive

Services View independent logic

Built in:◦ $http◦ $location◦ $timeout◦ $filter◦ $q◦ …

Page 9: Angular JS deep dive

Directives HTML extensions in templates

Adding special behavior to custom elements attributes or classes

Built in:◦ ng-app◦ ng-controller◦ ng-click◦ ng-model◦ ng-show◦ …

Page 10: Angular JS deep dive

FiltersValue formatters

Can be used in templates, controllers or services

Custom filters

{{ 12 | currency }} //12$

Page 11: Angular JS deep dive

Performance Lots of watchers can lag the ui (more then 2000)

Every expression {{}}, every directive is new watcher

ng-repeat instances new template/scope for each item

bindonce in 1.3

Page 12: Angular JS deep dive

Alternatives?Knockout.js/Backbone.js/Ember.js/React.js

Metric AngularJS Backbone.js Ember.jsStars on Github 27.2k 18.8k 11k

Third-Party Modules 800 ngmodules 236 backplugs 21 emberaddons

StackOverflow Questions 49.5k 15.9k 11.2k

YouTube Results ~75k ~16k ~6k

GitHub Contributors 928 230 393

Chrome Extension Users 150k 7k 38.3k

Page 13: Angular JS deep dive

Community http://ngmodules.org/

http://angular-ui.github.io/bootstrap/

Page 14: Angular JS deep dive

Angular 2.0<div ng-controller="SantaTodoController"> <input type="text" ng-model="newTodoTitle"> <button ng-click="addTodo()">+</button> <tab-container> <tab-pane title="Tobias"> <div ng-repeat="todo in todosOf('tobias')"> <input type="checkbox“ ng-model="todo.done"> {{todo.title}} <button ng-click="deleteTodo(todo)"> X </button> </div> </tab-pane>

<div> <input type=“text” [value]=“newTodoTitle”> <button (click)=“addTodo()”>+</buton> <tab-container> <tab-pane title=“Good kids”> <div [ng-repeat|todo]=“todosOf('good')”> <input type=“checkbox” [checked]="todo.done"> {{todo.title}} <button (click)="deleteTodo(todo)"> X </button> </div> </tab-pane>

Page 15: Angular JS deep dive

Angular 2.0 Angular 2.0 next year

Angular 1.X will be supported for a year and half after 2.0 comes out.

RIP controllers/$scope, directives, modules.

controllers + template => web components.

directives => component, template, decorative components.

$scope => component.

modules => ES6 modules.

component, services: annotated ES 6 class.

Web components (Polymer).

ES6 (traceur).