Introduction à Angularjs

30
Introduction à @rossioddet

description

Une petite introduction à AngularJS

Transcript of Introduction à Angularjs

Page 1: Introduction à Angularjs

Introduction à

@rossioddet

Page 2: Introduction à Angularjs

Miško Hevery

2009

Page 3: Introduction à Angularjs

Miško HeveryProjet Google Feedback

6 mois de développement

17 000 lignes de codes front-end

Des difficultés à développer et à réaliser du code testable

Page 4: Introduction à Angularjs

Miško Hevery

Le défi

Refaire l’équivalent des 6 mois de travail en 2 semaines

Page 5: Introduction à Angularjs

Miško Hevery

Pari perdu !

Page 6: Introduction à Angularjs

Miško Hevery

3 semaines

1 500 lignes de codes

Page 7: Introduction à Angularjs

La machine GoogleRefonte du projet Google Feedback

AngularJS devient open source

Des centaines de contributeurs

Promotion, Promotion, Promotion

Page 8: Introduction à Angularjs

Le 13/02/2014

Page 9: Introduction à Angularjs

SPA(Single Page Application)

Page 10: Introduction à Angularjs

Librairie vs Framework

Page 11: Introduction à Angularjs

Librairie vs Framework

Page 12: Introduction à Angularjs

AngularJS = framework pour SPA

Page 13: Introduction à Angularjs

Concepts clés

Templating côté client

Pattern MVC*

Databinding

Injection de dépendances

Extension du HTML

Page 14: Introduction à Angularjs

Pattern MVC* côté client

HTML

Vue

Modèle

Contrôleur Javascript

Front-end Javascript Back-end

HTTP

Page 15: Introduction à Angularjs

Templating côté client<div> Bonjour {{unPrenom}}, javascript est ton ami :)

<div ng-include="views/footer.html"></div> </div>

HTML

Page 16: Introduction à Angularjs

Databinding

<div> Bonjour {{unPrenom}}, </div>

var unPrenom = "Rossi";

Mise à jour automatiquedans les 2 sens

HTML Javascript

Page 17: Introduction à Angularjs

Injection de dépendances

var monModule = angular.module("monModule",["module1", "module2"]);

function ($scope, $window, monService) { // Utilisation de composant sans les instancier }

Page 18: Introduction à Angularjs

Extension HTML<div> <ma-balise></ma-balise>

<div mon-attribut="super"></div>

<div class="maClasseSpeciale"></div> <!-- monCommentaireSpecial --> </div>

HTML

Page 19: Introduction à Angularjs

Composants clés

Controller

Directive

Filter

Service

Module

HTML

Template

Javascript

Javascript

Javascript

Javascript

Javascript

|

$scope

HTML

Module

Module

Page 20: Introduction à Angularjs

Module

var monModule = angular.module("monModule", ["ngRoute", "unAutreModule"]);

Javascript

Page 21: Introduction à Angularjs

Service*monModule.factory("monService", function() { return { rechercher : function() {…}, enregistrer : function() {…} } }

function(monService) { monService.rechercher(); }

Javascript

Javascript

* Il existe d’autres façons de créer des services

Page 22: Introduction à Angularjs

Quelques services AngularJS

$http

$log

$location

$window

$document

$rootScope

$rootElement

$exceptionHandler

$cacheFactory

$filter

Page 23: Introduction à Angularjs

ControllermonModule.controller( 'monController', function($scope, $window, monService) { $scope.monModel = {nom : 'Pierre'};

}

<div ng-controller="monController"></div>HTML

Javascript

Page 24: Introduction à Angularjs

Filter

app.filter('monFiltre', function () { return function (input) { return //résultat du traitement ; } });

{{ maVariable | monFiltre }}HTML

Javascript

Page 25: Introduction à Angularjs

Quelques filtres AngularJS

orderBy

number

upperCase

lowerCase

json

filter

date

Page 26: Introduction à Angularjs

Directivesapp.directive('cbpDirective', function () { return { restrict: 'EA', replace: true, template : '<div>…</div>', … }; });

<cbp-directive><cbp-directive> <div cbp-directive="super"></div>HTML

Javascript

Page 27: Introduction à Angularjs

Quelques directives AngularJSApplicationng-appng-controller

FormulaireTemplate Opérationng-patternng-minlengthng-maxlengthng-requiredng-listng-true-valueng-false-valueng-optionng-submit

ng-cspng-disabledng-hideng-showng-mouseng-repeatng-switchng-transcludeng-view

ng-changeng-checkedng-clickng-hrefng-selected

Bindingng-bindng-modelng-initng-srcng-style

Page 28: Introduction à Angularjs

Directives & Validateurs HTML

Validateur Format Exemple (ngRepeat)

Aucun namespace-name ng-repeat=item in items

XML namespace:name ng:repeat=item in items

HTML5 data-namespace-name data-ng-repeat=item in items

xHTML x-namespace-name x-ng-repeat=item in items

Page 29: Introduction à Angularjs

AngularJS c’est aussi…

angular.copyangular.equalsangular.forEachangular.isArrayangular.isDateangular.element…

Des utilitaires Des modulesngAnimatengCookiesngMockngResourcengRoutengSanitizengTouch…

AngularUIUI-BootstrapUI-RouterNG-GridUI-AliasCalendarGoogle Maps…

Des testsUnitaireIntégration

Page 30: Introduction à Angularjs

La démo