AngularJS. AngularJS 13/05/2015
|
|
- Ange Larrivée
- il y a 8 ans
- Total affichages :
Transcription
1 AngularJS AngularJSest né en 2009 dans les locaux de Google. Angular est construit autour des concepts clés suivants: Architecture MVC (Modèle-Vue-Contrôleur) ou MVW (Model-View-Whatever) 2 WayData Binding Injection de Dépendances Manipulation du DOM au moyen de directives SPA(Single Page Application) Petit détail: pourquoi Angular? à cause des "angles brackets" qui entourent les balises HTML. AngularJS Précision préliminaire pour les développeurs JavaScript "oldschool": avec Angular, il n'y a, en général, pas de manipulation directe du DOM, si, si!! Avec jquery, Prototype et autres librairies JavaScript, on doit presque toujours sélectionner un élément (via l'api DOM) pour pouvoir l'utiliser. Avec AngularJSon peut ajouter, supprimer et modifier la page HTML sans faire aucun appel au DOM: plus besoin de $(), getelementbyid(),... Note: les accros à jquery ont toutefois accès, depuis Angular, à jqlite(un jquery Lite) mais c'est souvent déconseillé. 1
2 SPA: Single Page Application AngularJSpermet de développer des applications Web de type SPA. Une SPA(Single Page Application) est une application web accessible via une page web unique. Le but est d éviter le chargement d une nouvelle page à chaque action demandée et d'améliorer ainsi l expérience utilisateur (meilleure fluidité). SPA: Single Page Application La différence entre une SPA et un site web classique réside dans leur structure et dans la relation qu'ils établissent entre le navigateur et le serveur: Une SPA est donc composée d une seule page. Le rôle du browser (front-end) est beaucoup plus important : toute la logique applicative y est déportée. Le serveur (back-end) est "seulement"responsable de la fourniture des ressources àl application et surtout de l'exposition des données. 2
3 SPA: pourquoi on en parle? Les frameworksjs comme AngularJSet EmberJS participent à la popularité des SPA. Les SPA s'appuyant sur de tels frameworksont en général comme avantage d'être: testables (unitairement et fonctionnellement) fluides (pas de rechargement d url etc) bien organisées maintenables et évolutives... SPA: les pièges à éviter Néanmoins il y a plusieurs points à prendre en compte lorsqu on réalise une SPA pour éviter des problèmes potentiels: 1. La taille du DOM (trop gros il peut ralentir fortement le browser). 2. Les traitements (trop lourds il peuvent ralentir le browser). 3. L empreinte mémoire de l'application(qui doit être la plus réduite possible). Solutions: 1. Essayer de ne charger que les éléments nécessaires à l utilisateur du site et décharger les autres. 2. Ecrire et tester correctement son code. 3. Utiliser une solution basée sur un "virtual DOM" (React.JS est un framework JavaScript pionnier en la matière). 3
4 SPA: les pièges à éviter Autre sujet qui peut être un problème avec les SPA: le référencement (problématique du "SEO" - Search Engine Optimization). Les moteurs de recherche ont du mal à "crawler" des sites dynamiquement gérés par du JavaScript. Des solutions existent pour fournir spécifiquement à Google une version correspondante aux "snapshots" HTML générés par les applications SPA. Ces solutions sont accessibles soit en mode SAAS (payantes et hébergées) soit en mode Open- Source à héberger soi-même. Les modules Les modules sont les éléments de plus haut niveau dans une application AngularJS, ilsencapsulent l ensemble des éléments d une application AngularJS: vue, contrôleur, services, Une application AngularJSest souvent composée d'un seul module, mais il est tout à fait possible de diviser une application en plusieurs modules (un par fonctionnalité par exemple), le but étant, si possible, de réutiliser un même module dans plusieurs applications. 4
5 Les modules Pour créer un module, on utilise la méthode module() de l objet angular. var myapp = angular.module("exampleapp", []); Cette méthode prend en paramètre le nom de module suivi d un tableau correspondant aux dépendances du module et d'une fonction ou d'un tableau utilisé pour la configuration du module. Les modules L objet correspondant au module expose plusieurs méthodes et propriétés qui servent à construire les différents éléments d'un module. animation(name, factory): pour créer des animations. config(callback): pour enregistrer une fonction utilisée pour configurer le module. constant(key, value): pour créer un service retournant une constante. controller(name, constructor): pour créer un contrôleur. directive(name, factory): pour créer une directive (pour étendre le HTML). 5
6 Les modules factory(name, provider): pour créer un service. filter(name, factory): pour créer un filtre. provider(name, type): pour créer un service. name: le nom du module. run(callback):pour enregistrer une fonction à invoquer lorsque AngularJS aura chargé et configuré tous les modules. service(name, constructor) : pour créer un service. value(name, value): pour définir un service retournant une valeur constante. Les modules Une fois défini un module, son nom doit être associé au contenu HTML par l'attribut ng-app(souvent associé à l'élément racine <html>): <html ng-app= "exampleapp" >. </html> 6
7 Les contrôleurs Les contrôleurs permettent de gérer le comportement d un bout de code HTML. Par exemple ils peuvent servir à gérer la soumission d un formulaire ou encore àtrier les résultats d un tableau de données. Il suffit de définir le contrôleur comme une fonction JavaScript et de l'associer à un élément HTML. Les contrôleurs <div ng-controller="listctrl"> </div> <span>{{items.length}} items</span> <ul> </ul> <li ng-repeat="item in items">{{item}}</li> <form ng-submit="additem()"> <input type="text" ng-model="itemtext" size="30" placeholder="add new item"> <input class="bt-sub" type="submit" value="add"> </form> 7
8 Les contrôleurs Un contrôleur possède automatiquement un scope. Le scope permet d associer des données au contrôleur qui seront automatiquement mises à jour dans la vue (et vice-versa) (principe du 2-way data-binding). function ListCtrl($scope) { } // Liste d'items par défaut $scope.items = ["hello", "world"]; // Ajout d un item (associé au submit) $scope.additem = function() { }; $scope.items.push($scope.itemtext); $scope.itemtext = ''; Les contrôleurs On peut également injecter des dépendances dans un contrôleur, peu importe l ordre(par exemple des services comme $http): function ListCtrl($http, $scope) { $scope.items = ["hello", "world"]; $scope.additem = function() { $scope.items.push($scope.itemtext); // Utilisation du service $http injecté dans le contrôleur $http.post('/items', $scope.itemtext); $scope.itemtext = ''; }; } 8
9 La vue La vueest ce que voit l'utilisateur final. La vue est générée à partir d'un template. Le templateest le fichier HTML enrichi de certains attributs et balises propres à AngularJS(les directives). Celles-ci permettent d'utiliser des raccourcis syntaxiques pour afficher des variables, faire des boucles, des tests et bien d'autres choses encore. Pas besoin d'un "templateengine" externe (comme UnderscoreJSou Handlerbars) avec Angular: celui-ci intègre nativement un moteur de template. Le modèle Le modèle est contenu dans l'ensemble des scopes de la page. Un scope est un objet dans lequel des propriétés (variables, méthodes) peuvent exister. Il existe une hiérarchie arborescente de scopes. La racine de tous les scopes est le $rootscopeinstancié lorsqu'angularjsvoit la directive ng-app (souvent associée à la balise <html>). Il y a ensuite un scope par contrôleur (directive ngcontroller). Certaines directives créent leur propre scope (ex: ngrepeat). En général, les scopes sont créés et injectés automatiquement par AngularJS. 9
10 Le "2-Way data-binding" AngularJS(mais aussi KnockoutJS ou EmberJS) implémente le Two-WayData Binding (ou liaison bilatérale des données): les données du modèle et de la vue sont liées entre elles et dans les deux sens. Au chargement de la page, AngularJScrée le modèle et initialise les variables des scopes selon ce qui est déclaré dans le contrôleur et le template. Après le modèle, AngularJS génère la vue. Ce concept est au centre du framework, il simplifie grandement le développement: les variables de la vue et du modèle sont constamment synchronisées. Le "2-Way data-binding" Le 2-Way Data Binding permet, dans beaucoup de situations, d'éviter la manipulation du DOM. 10
11 L'injection de dépendances Le système d'injection de Dépendances (DI) a pour rôle de créer un composant, de résoudre ses dépendances et de passer sa référence (l'injecter) lorsque c'est nécessaire à un autre composant. Par exemple, souvent, un contrôleur demandera au DI l'objet $scope. Celui-ci sera injecté et utilisable à l'intérieur du contrôleur, avec ses propriétés et méthodes. On ajoute ainsi des fonctionnalités à un contrôleur (ou d'autres composants) via des services ou modules injectés. Le DI nous assure qu'il n'y aura pas de conflits entre les différentes parties du code, même si elles utilisent les mêmes services. L'injection de dépendances Le DI impose une certaine syntaxe pour identifier le composant à injecter. angular.module('app', []).controller('todocontroller', ['$scope', function ($scope) { $scope.todos = [ { title: 'Learn JavaScript', completed: true }, { title: 'Learn Angular.js', completed: false }, { title: 'Learn JS design patterns', completed: false }, { title: 'Build Node.js backend', completed: false }, ]; }]); 11
12 Les directives Les directivessont un concept très important en AngularJS: elles permettent d étendre les capacités du langage HTML, de lui apporter de nouvelles fonctionnalités. Les directives sont utilisées dans le template HTML. <div ng-show="user.islogged">bonjour {{user.name}} </div> Directives, HTML et CSS standard, expressions et filtres forment la "Vue". Les directives Angularpropose un certain nombre de directives prédéfinies. Certaines sont structurantes: nb-app: création d'une application Angular nb-controller: association d'un contrôleur à une vue nb-view: association d'une vue à une route D'autres directives concernent les liaisons et les templates: ng-bind: création d'un data-binding uni-directionnel ng-model: création d'un data-binding bi-directionnel ng-repeat: génération répétitive d'éléments ng-include: chargement une vue partielle ng-switch: affichage, sous condition, d'éléments 12
13 Les directives Certaines directives sont liées aux éléments et événements DOM: ng-show, ng-hide: masquer/faire apparaitre un élément ng-if: supprimer, sous condition, un élément du DOM ng-class: gérer la classe CSS d'un élément ng-style: gérer le style CSS d'un élément ng-class-odd, ng-class-event: changer la classe CSS d'un élément généré par un repeat selon sa position ng-click, ng-focus, ng-mouseover,...: associer une action à un événement particulier ng-checked, ng-disabled, ng-readonly,... : gérer les propriétés booléennes de certains éléments Les directives Enfin certaines directives sont liées aux formulaires: ng-change: expression évaluée quand le contenu d'un élément change ng-minlength, ng-maxlength, ng-required,...: utilisés pour la validation du formulaire. En plus des directives AngularJsprédéfinies, on peut créer ses propres directives. On bénéficie ainsi d'un élément réutilisable: une sorte de bout de code dynamique. Toutefois, la création d'une directive est sans doute la tâche la plus complexe à réaliser dans AngularJS. 13
14 Les expressions On utilise les expressions AngularJSdans les vues: directement dans le code HTML ou associées à des directives. Elles sont "parsées" et exécutées par AngularJS. Elles acceptent un sous-ensemble des opérateurs et des mots-clefs de JavaScript. Règle: ne pas mettre de code dans les vues. Le code mis dans les vues ne peut pas faire l'objet de tests unitaires, et il est plus difficilement gérable. Il faut donc se limiter à des expressions "simples": binding sur des propriétés du scope, appels de fonctions du scope, comparaisons simples... Les expressions Il vaut mieux remplacer les expressions complexes par des appels à des fonctions qu'un contrôleur publie dans son scope. Mots-clefs et opérateurs disponibles: true, false, undefined, null +,-,*,/,%,(),==,!=,<,>,<=,>=,!,&&,,===,!==,= Tous les identifiants utilisés dans des expressions sont recherchés comme des propriétés du scope. 14
15 Les expressions <div ng-init="qte=12;prix=5.2"> <p>total: {{ qte*prix }}</p> </div> <div ng-init="personne={nom:'martin',prenom:'eric'}"> <p>prenom: {{ personne.prenom}}</p> </div> Attention: utiliser un objet nul ou non défini dans une expression ne provoque aucune erreur pour ne pas gêner le client, c'est donc difficile à détecter! Les expressions Pour ajouter une fonctionnalité utilisable dans les expressions on peut: 1. publier une fonction dans un scope: pour un usage bien localisé 2. créer un filtre: pour un besoin général (disponible dans toutes les expressions de toutes les vues). Le service $parsepermet de compiler une expression AngularJS en une fonction qu'on pourra exécuter en lui passant un scope. 15
16 Les filtres Les filtres permettent de faciliter l affichage des données. Ils utilisent la syntaxe des pipes: ' ' Exemples de filtres de formatages pour les dates et nombres: today is {{date date:'dd/mm/yyyy'}} price is {{number currency}} Exemple de filtre pour les chaînes: {{astring uppercase}} Il est possible d enchainer les filtres. Les filtres Certains filtres vont modifier le DOM: <a href="" ng-click="predicate='age'; reverse=false">name</a>... <tr ng-repeat="nom in noms orderby:predicate:reverse"> Le filtre filterpermet de réduire un tableau de données: Any: <input ng-model="search.$"> <br> Name only <input ng-model="search.name"><br> Phone only <input ng-model="search.phone"><br> <tr ng-repeat="friend in friends filter:search"> On peut créer ses propres filtres. La technique est similaire aux directives, contrôleurs et services. 16
17 Les services Service, factoryou provider, dans AngularJS, servent à la même chose: un service est juste une manière plus facile d écrire une factory, qui est juste une manière plus simple d écrire un provider. Les 3 servent à créer un objet JavaScript ordinaire. Un service permet d'isoler certaines fonctionnalités, que l'on pourra utiliser dans le reste de l'application par injection de dépendances. Dans un service, on met du code métier et/ou des données de l application, groupés par thème. Les services Exemple de service: monapp.service('profile', function() { this.name = "Anonymous"; this.id = null; this.login = function(){ // code pour se connecter } this.logout = function(){ // code pour se déconnecter } }); 17
18 Les services Le service peut être ensuite injecté dans un contrôleur ou dans un autre service. mymonappapp.controller('uncontrolleur', function($scope, profile) { }); Les services AngularJS sont : $scope.profile = profile; 1. "Lazilyinstantiated", c est-à-dire instanciés uniquement quand on en a besoin. 2. Des singletons. Les services On met dans les services, tout le code qui n est pas lié à la navigation ou à la manipulation de DOM. Bref, lié à la logique de l'application et non lié au Web. Généralement, ces services sont utilisés : 1. Par un contrôleur (et aussi par les vues du fait du data-binding). 2. Par une directive. 3. Par d autres services. 18
19 Services proposés par défaut Voici quelques exemples de services AngularJS $animate: anime une transition de contenu. $document: fournitun objet jqliteencapsulantl objetdom window.document $exceptionhandler: aide à la gestion des exceptions. $filter: permetl'accésaux filtres. $http: crée et gère des requêtes AJAX. $injector: crée des instances de composants AngularJS. $interval: fournit un wrapper sur la fonction window.setinterval. $location: fournit un wrapper sur l objet location du browser. Services proposés par défaut $log: fournit un wrappersur l objet console. $q: permet de créer explicitement des objets promises. $resource: facilite l usage des services RESTful. $rootelement: fournit l'accès à la racine du DOM. $rootscope: fournit l'accès au scope de plus haut niveau. $route: permet de changer le contenu d une vue en fonction d une URL. $routeparams: permet de traiter les URL de routage. $swipe: permet de reconnaitre la gestuelle "swipe". $timeout: fournit un wrappersur la fonction window.setitimeout. $window: fournit une référence sur l objet window. 19
20 Validation des forms AngularJSprend en charge les formulaires et leur validation. Les règles de validation supportées de base sont basées sur le type du champ input, sa taille mini, maxi, son contenu (pattern), sa présence, Il est également possible d ajouter ses propres règles de validation en créant des directives. Validation des forms AngularJSpositionne plusieurs propriétés au niveau du formulaire et des champs qui le composent: $valid: Indique si les règles de validation sont respectées pour le champ concerné $invalid: Indique si au moins une des règles de validation est violée pour le champ concerné mais aussi $pristine, $dirty, $error.<rule> Ces propriétés sont accessibles par la syntaxe: <nom du formulaire>.<propriété> <nom du formulaire>.<nom du champ>.<propriété> Des classes CSS équivalant à ces propriétés sont aussi générées automatiquement: ng-pristine, ng-valid, etc. Libre à nous de leur associer le style souhaité. 20
21 Validation des forms Pour indiquer à l utilisateur si sa saisie est valide on peut jouer avec du css(les classes "has-error" et "has-success" de boostrappar exemple). Pour ajouter ces classes dynamiquement, on utilise la directive ng-class et une expression: <input.. ng-class="{'has-error': registerform.$dirty, 'has-success': registerform.password.$valid}" La directive ng-show peut être utilisée pour afficher un message sous condition: <p ng-show="userform.name.$invalid &&!userform.name.$pristine" class="help-block">veuillez indiquer votre nom</p> On peut désactiver un bouton, tant qu'un formulaire n est pas valide, avec la directive ng-disabled: <input type="submit" class="btn btn-default" value="sign Up" ng-disabled="registerform.$invalid" /> Le routage Principe bien connu dans les frameworksweb de tous types, la notion de routagepermet d associer une URL à une ressource (page web dynamique ou statique). AngularJSpropose une construction d URL permettant de pointer à un "endroit" précis de l'application: le "deep-linking". Par "endroit", on entend ici pointer vers les 3 éléments qui permettent de construire une page : le template+ le contrôleur + les variables (de session ou données par l'url). La page principale est ici le templateprincipal et charge, au niveau de la directive ng-view, la vue correspondant à l URL. 21
22 Le routage La déclaration des routes se fait via les services $routeprovideret $route en utilisant la méthode config() du module. var app= angular.module('myapp', []); app.config(['$routeprovider', function($routeprovider) { $routeprovider.when('/edit/:alarmid', { templateurl: 'edit.html', controller: AlarmEditCtrl}); $routeprovider.when('/list', { templateurl: 'partial_list.html', controller: AlarmListCtrl}); $routeprovider.otherwise({ redirectto: '/list' }); }]); Le routage 2 routes sont ici déclarées pointant chacune vers une vue: une pour afficher une liste d alarmes (/list), une autre pour éditer/créer une alarme (/edit). Le fragment partial_list.htmlcontient qquechose comme: <ul> <li ng-repeat="alarm in alarms"> </li> </ul> <h3> {{alarm}} </h3> <a ng-href="#/edit/{{$index}}">editer</a> 22
23 Le routage Le fragment edit.html contient qque chose comme: <a class="btn" ng-href="#/list">retour</a> <input class="btn-success" ng-click="savealarm()" value="sauver"/> Enfin, dans le template principal on trouve: <div ng-controller="alarmctrl"> </div> <h2>nombre d'alarmes {{alarms.length}} <a class="btn-primary" ng-href="#/edit/"> Ajouter une alarme</a></h2> <div ng-view></div> Le routage Extrait du contrôleur AlarmEditCtrl: function AlarmEditCtrl($scope, $routeparams, $location) { } var newalarm = false; if ($routeparams.alarmid) { $scope.alarm = $scope.alarms[$routeparams.alarmid]; } else{ } $scope.alarm= ""; newalarm = true; $scope.savealarm = function() { if (newalarm) $scope.alarms.push($scope.alarm); else $scope.alarms[$routeparams.alarmid] = $scope.alarm; $location.path("/list"); }; 23
24 Le routage La construction d URL, lors du routage, est compatible avec la recommandation HTML5 HistoryAPI grâce à l objet $location. Pour les browsers non encore compatibles, la technique du "hashbang" est utilisée. Il est possible de paramétrer des actions à réaliser avant le chargement de la page (une animation de type sablier par exemple). Il n est pas possible de définir plusieurs directives ngviewdans une même page (pour créer des vues imbriquées). Toutefois, le module (non standard) uirouter ou la directive (standard) ng-include permettent de faire cela. Les tests La possibilité de tester facilement son code est un des plus grands atouts d AngularJS. Le découplage du code en différentes parties (contrôleurs, services, directives, ) ayant chacune une mission spécifique, en facilite le test. Deux types de tests sont à notre disposition: les tests unitaires et les tests d intégration dits tests End-to-End (E2E). 24
25 Les tests: les outils Note: les outils évoqués ici (tous des modules npm) sont inclus par les générateurs comme Yeoman. Grunt(ou gulp) pour lancer les tâches de tests (Grunt se configure via le fichier Grunfile.js). Karma pour exécuter les suites de tests. Un wizard intégré aide à la génération d'un fichier de configuration. Les tests: les outils Pour utiliser Karma au travers de tâches Grunt, on ajoute gruntkarma à l'application et on modifie Gruntfile.js: grunt.loadnpmtasks('grunt-karma'); grunt.initconfig({ karma: { unit: { configfile: 'tests/karma.conf.js'} } }); grunt.registertask('test', [ 'jshint', 'karma' ]); Note: non directement lié aux tests mais très utile, JSHintpermet de détecter les erreurs et problèmes potentiels des scripts JavaScript et vérifie le respect de certaines conventions de codage (paramétrables). 25
26 Les tests: les outils Pour les tests unitaires eux-mêmes (dans l'ordre de popularité): Jasmine, Mochaou QUnit(à préciser lors de la génération de la configuration de Karma). Certains tests ne peuvent se faire sans "mock", pour cela: ngmock(un module AngularJS). Mais c est un module à utiliser côté client, pour cela il est recommandé de l installer par le biais de Bower. Bowerest un gestionnaire de paquets (comme npm), mais optimisé pour le front-end. Pour vérifier la couverture des tests unitaires, on peut ajouter le module karma-coverage. Tests Unitaires avec Jasmine Soit le service (fibonacciservice.js) suivant: angular.module('exempletestunit', []).service('fibonacciservice', [function() { // Implémentation non-récursive: this.fibonacci = function(num) { var prev1 = 1, prev2 = 0, current= 1; for (var n = 2; n <= num; n++) { current= prev1 + prev2; prev2 = prev1; prev1 = current; } return current; }; }]); 26
27 Tests Unitaires avec Jasmine describe('exempletestunit.fibonacciservice', function() { var FibonacciService; // ngmock injecte un mock module avant chaque test: beforeeach(module('exempletestunit')); // ngmockinjecte un mockdu service à tester avant chaque test beforeeach(inject(function($injector) { })); FibonacciService = $injector.get('fibonacciservice'); it('devrait retourner les nombres corrects de la suite de Fibonacci', function() { }); }); expect(fibonacciservice.fibonacci(0)).tobe(0); expect(fibonacciservice.fibonacci(1)).tobe(1); expect(fibonacciservice.fibonacci(10)).tobe(55); Les tests: les outils Pour les tests E2E, on installe Protractoret pour le lancer comme tâche grunt grunt-protractor-runner. Protactor remplace l'ancien NGScenario. Protractorest construit au dessus WebDriverJS et Selenium Webdriver. Protactorpermet de préciser le browser avec lequel faire passer les tests (il intègre Chrome, Firefox, IE, Opera,...). Note: Protactorutilise la même syntaxe que Jasmine pour l écriture des tests. 27
28 Tests E2E avec protactor describe('angularjs homepage', function() { it('should greet the named user', function() { browser.get(' element(by.model('yourname')).sendkeys('jean'); var greeting = element(by.binding('yourname')); expect(greeting.gettext()).toequal('hello Jean!'); }); }); En complément: AngularUI Une suite de composants (très modulaire) qui complète bien le framework AngularJS. Attention: Ne fonctionne pas complètement avec AngularJS 1.3 (mais bien avec 1.2) 28
29 En complément: AngularUI UI.Utils: le couteau Suisse des projets AngularJS Ex: gestion de nouveaux événements, accès simplifié aux fonctions jquery, listes scrollable efficaces,... NGGrid: gestion de grille (utilise JQueryUIou HTML5) UI-Router: gestion des routes avec support des vues imbriquées En complément: AngularUI UI-modules: une interface avec différents modules externes, dont certains en provenance de jquery UI: fullcalendar, datepicker UI-Alias: pour créer des alias de directives UI-Gmap: un ensemble de directives pour s interfacer avec Google Map. 29
30 En complément: AngularUI Plugin pour différents IDE (Sublim, Atom,...) UI-Bootstrap: des directives AngularJSbasées sur Bootstrap3.x Note: BootstrapTwitter est une collection d'outils qui facilite la création d'un site web: carrousel, fenêtres modales, tooltip, table,... le tout de manière "responsive") Encomplément: ily a aussi Une alternative à UI-Bootstrap, plus orientée plateforme mobiles, est le framework ionic ( qui propose de nombreuses directives AngularJS Mais on peut citer aussi: Kendo UI, Wijmo, 30
31 Encomplément: ily a aussi Il existe bien d'autres modules pour AngularJS (voir ), par exemple: AngularGettext: un module très pratique qui facilite l'internationalisation de l'application. Restangular: un module fait pour utiliser une API Rest, plus simple à utiliser que le service intégré $resource. Le "back-end" Développer correctement une application SPA implique d'avoir 2 applications distinctes: une pour le front-end et l'autre pour le back-end. Est-il utile, pour autant, d'avoir un back-end MVC et en frontend AngularJS? AngularJSdéporte toute la logique de présentation côté client mais aussi le système de routage et la logique de chaque page. En général, Le back-end n'a plus en charge QUE les accès à la base de données. Le back-end n'envoie aucune vue au client, juste des données quand celui-ci les demande via des requêtes AJAX. 31
32 Le "back-end" Le back-end propose donc, le plus souvent, une API. Cette API respecte, en général, le protocole: REST (Representational State Transfer). On parle d'api RESTFul. Cette API reçoit des requêtes (HTTP avec différents verbes POST, PUT, GET,...) et retourne si besoin des résultats (au format JSON). Souvent l'api implémente un système de CRUD (Create, Read, Update, Delete). Il existe de nombreux frameworks(utilisant Node.js ou autre) qui permettent de développer une API RESTful facilement. Les promises Une promise(promesse) est un objet représentant le résultat futur d une action exécutée de manière asynchrone. On y greffe des "callbacks" de succès et d erreurs afin de pouvoir traiter le résultat renvoyé par la promise. Les promises sont intensivement utilisées dans AngularJS par le biais de ses services : $http, $resource, $timeout, etc. 32
33 Les promises L exemple de promesses le plus simple serait par exemple un GET avec le service $http (action, par nature, asynchrone qui utilise AJAX): var promise = $http.get('/users/1'); promise.then(function(value) { }); // successcallback console.log(value); Le callback de succès, la fonction passée en argument de then(), prend en argument le résultat renvoyé par la fonction asynchrone (les données de l utilisateur dans notre exemple). Les promises La signature de then()est: then(successcallback, errorcallback, notifycallback) catch(errorcallback)est un raccourci pour then(null, errorcallback). finally(callback, notifycallback) est toujours appelé, que la promise soit un succès ou un échec. Les promesses renvoyées par les services $http et $resource exposent des fonctions supplémentaires: success(function(data, status, headers, config){}) error(function(data, status, headers, config){}) 33
34 Les promises $http.get('/users/1').success(function(data, status, headers, config) { // invoqué quand la réponse est disponible }).error(function(data, status, headers, config) { // invoqué en cas d échec }); Les promises AngularJSnous permet de créer nos propres promises. Pour cela on utilise le service $q qui est une implémentation de la librairie Q en JavaScript. 34
35 Outils de debug Pour aider à la mise au point des applications Angular, quelques outils existent (en plus des debuggersjs traditionnels). Battarang(extension chrome) développée par Google pour aider au debugdes applications AngularJS, permet de: suivre l'état du modèle en temps réel (contenu des scopes et vue schématique de l'arbre des scopes). voir l'ensemble des bindings et applications de la page. visualiser le temps pris par les différentes expressions pour se réaliser. suivre au moyen d'un graphe les dépendances qui existent entre les modules de l'application. Outils de debug ng-inspector(extension Chrome et Safari) plus limité que Battarangil permet de visualiser le scope et de suivre les effets du "2-way data binding". 35
36 Editeurs et IDE Netbeans8: intègre le support natif d'angularjs(mais aussi de ses concurrents: Ember, Knockout,...). Lors de la création d'un projet, Netbeansconstruit un squelette d'application très complet (basé sur le "AngularJS Seed Template"). Aptana avec le plugin AngularJS Eclipse WebStorm Sublime Text avec AngularJS package Autres outils Yeomanest un ensemble de trois outils utiles pour le développement Web en général : Yo, Gruntet Bower. Yo est un outil de "scaffolding". Yodispose de plusieurs générateurs pour différents frameworksjs (dont un pour AngularJS). Grâce à ce générateur Yopeut créer le squelette complet d'une application AngularJSavec vues, contrôleurs, routes, tests,... Yeoman nécessite Node.js pour fonctionner. 36
37 La concurrence Il existe de nombreux concurrents au framework AngularJS. Tous sont centrés autour du pattern MV* et la plupart basés sur le principe des SPA. Les plus sérieux sont: Backbone.js (2010), KnockoutJS (2010), Ember (2011) et ReactJS (2013) Mais il y a aussi: Sails.js, CanJS, MarionetteJS, Pour vous faire une idée plus précise par vous-même de l'usage de ces frameworks, le site met àdisposition les sources d'une même application développée tour à tour avec chacun d'entre eux. La concurrence Sans rentrer dans un comparatif technique fastidieux et forcément sujet à controverses, ce que l'on peut affirmer aujourd'hui sans grand risque est qu'angularjs est un très bon frameworket sans doute aujourd'hui le plus populaire. Les petits reproches que l'on peut lui faire sont la difficulté que l'on peut rencontrer à le faire coexister avec d'autres librairies JS et son "dogmatisme" ("opinionatedframework"): il faut rentrer dans le "moule" pour tirer partie de tous ses avantages. 37
38 La concurrence Voici ce que dit par exemple Google Trends sur la popularité de ces 4 noms: La concurrence Le petit dernier, ReactJS(de Facebook) suscite aujourd'hui, à juste titre, un grand intérêt, mais il est encore jeune et pas aussi complet que les autres Frameworks. 38
39 AngularJS: son propre concurrent? Angular2.0 (annoncé pour début 2016) s'éloigne clairement de la version 1.x sans pour autant fournir de mécanisme de migration. AngularJS 2.0 se base sur un nouveau langage: AtScript (un sur-ensemble de EcmaScript6), n'utilise plus de contrôleurs, ni de $scope. Les développeurs familiarisés avec Angular1.x seront confrontés à un frameworkbien différent et devront apprendre sa nouvelle architecture. Merci pour votre attention! Vous pourrez retrouver cette présentation prochainement sur notre site: Des questions? 39
Développement d'applications Web HTML5 L'art et la manière avec Visual Studio 2015 et TFS
Avant de commencer 1. Introduction 15 2. HTML5 oui, mais pas que... 15 2.1 HTML5 16 2.2 JavaScript 17 2.3 CSS 18 3. Les outils 18 Préparation des outils et création du projet 1. Introduction 21 2. Team
Plus en détailAngularJS pour une application d'entreprise
AngularJS pour une application d'entreprise SAVOIR FAIRE SERIAL Jean-Philippe Laurent Responsable pôle Web Benoit Charpié-Pruvost Expert AngularJS 18 juin 2015 BRINGING THE HUMAN TOUCH TO TECHNOLOGY BRINGING
Plus en détailDevenez un véritable développeur web en 3 mois!
Devenez un véritable développeur web en 3 mois! L objectif de la 3W Academy est de former des petits groupes d élèves au développement de sites web dynamiques ainsi qu à la création d applications web
Plus en détailASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques
Introduction 1. Introduction 11 2. La plateforme de développement web de Microsoft 11 3. Définition du modèle de programmation MVC 14 4. L'historique d'asp.net MVC 17 4.1 ASP.NET MVC 1 (2008) 17 4.2 ASP.NET
Plus en détailProgrammation Web. Madalina Croitoru IUT Montpellier
Programmation Web Madalina Croitoru IUT Montpellier Organisation du cours 4 semaines 4 ½ h / semaine: 2heures cours 3 ½ heures TP Notation: continue interrogation cours + rendu à la fin de chaque séance
Plus en détailINTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)
CS WEB Ch 1 Introduction I. INTRODUCTION... 1 A. INTERNET INTERCONNEXION DE RESEAUX... 1 B. LE «WEB» LA TOILE, INTERCONNEXION DE SITES WEB... 2 C. L URL : LOCALISER DES RESSOURCES SUR L INTERNET... 2 D.
Plus en détailHTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES
Epsilon_GT_v8_Mise en page 1 20/07/2015 15:45 Page 29 Développement d applications Web HTML5 L art et la manière avec Visual Studio 2015 et TFS Préface Avant de commencer Préparation des outils et création
Plus en détailDévelopper des Applications Internet Riches (RIA) avec les API d ArcGIS Server. Sébastien Boutard Thomas David
Développer des Applications Internet Riches (RIA) avec les API d ArcGIS Server Sébastien Boutard Thomas David Le plan de la présentation Petit retour sur les environnements de développement ArcGIS Server
Plus en détail3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures
3W Academy Programme de Formation Développeur Intégrateur web Total : 400 heures Objectif global : A l issue de la formation, les stagiaires doivent être opérationnels dans la création d un site internet
Plus en détailAuteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA
Auteur LARDOUX Guillaume Contact guillaume.lardoux@epitech.eu Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA Sommaire 1. Introduction 2. Installation 3. Fonctionnement 4. Développement 5. Démonstration 2
Plus en détailDA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova
DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova I. Introduction Dans une période où la plasticité peut aider à réduire les coûts de développement de projets comme des applications mobile,
Plus en détailWEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES
WEB & DÉVELOPPEMENT LES BASES DU WEB HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES LE LANGAGE HTML STRUCTURE D UNE PAGE En-tête et corps Syntaxe INSÉRER DES CONTENUS Texte : formatage (titre,
Plus en détailServeur d'application Client HTML/JS. Apache Thrift Bootcamp
Serveur d'application Client HTML/JS Apache Thrift Bootcamp Pré-requis La liste ci-dessous de logiciels doit être installée et opérationnelle sur la machine des participants : Compilateur thrift http://thrift.apache.org/
Plus en détail4. SERVICES WEB REST 46
4. SERVICES WEB REST 46 REST REST acronyme de REpresentational State Transfert Concept introduit en 2000 dans la thèse de Roy FIELDING Est un style d architecture inspiré de l architecture WEB En 2010,
Plus en détailEXTENSION de Microsoft Dynamics CRM 2013. Réf FR 80452
EXTENSION de Microsoft Dynamics CRM 2013 Réf FR 80452 Durée : 3 jours A propos de ce cours : Ce cours offre une information interactive et détaillée sur le développement d extensions pour Microsoft Dynamics
Plus en détailLes grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully
Les grandes facettes du développement Web Qui sommes nous? Nicolas Thouvenin Stéphane Gully Projets Web depuis 2000 LAMP, NodeJS HTML, CSS, jquery
Plus en détailPoint sur les solutions de développement d apps pour les périphériques mobiles
Point sur les solutions de développement d apps pour les périphériques mobiles Par Hugues MEUNIER 1. INTRODUCTION a. Une notion importante : le responsive web design Nous sommes en train de vivre une nouvelle
Plus en détailAJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada
AJAX (Administrateur) (Dernière édition) Programme de formation Microsoft Partner France, Belgique, Suisse, Roumanie - Canada WWW.SASGROUPE.COM Formez vos salariés pour optimiser la productivité de votre
Plus en détailPrésentation du Framework BootstrapTwitter
COUARD Kévin HELVIG-LARBRET Blandine Présentation du Framework BootstrapTwitter IUT Nice-Sophia LP-SIL IDSE Octobre 2012 Sommaire I. INTRODUCTION... 3 Définition d'un framework... 3 A propos de BootstrapTwitter...
Plus en détailTP JAVASCRIPT OMI4 TP5 SRC1 2011-2012
TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012 FORMULAIRE DE CONTACT POUR PORTFOLIO PRINCIPE GENERAL Nous souhaitons réaliser un formulaire de contact comprenant les champs suivants : NOM PRENOM ADRESSE MAIL MESSAGE
Plus en détailLangage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>
Langage HTML (2 partie) «Je n'ai fait que prendre le principe d - hypertexte et le relier au principe du TCP et du DNS et alors boum! ce fut le World Wide Web!» Tim Berners-Lee
Plus en détailJoomla! Création et administration d'un site web - Version numérique
Avant-propos 1. Objectifs du livre 15 1.1 Orientation 15 1.2 À qui s adresse ce livre? 16 2. Contenu de l ouvrage 17 3. Conclusion 18 Introduction 1. Un peu d histoire pour commencer... 19 1.1 Du web statique
Plus en détailLe stockage local de données en HTML5
Le stockage local HTML5, pourquoi faire? Dans une optique de réduction des couts de maintenance, de déploiement, beaucoup d'entreprises ont fait le choix de migrer leurs applicatifs (comptables, commerciales,
Plus en détailNFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web
NFA016 : Introduction O. Pons, S. Rosmorduc Conservatoire National des Arts & Métiers Pour naviguer sur le Web, il faut : 1. Une connexion au réseau Réseau Connexion physique (câbles,sans fils, ) à des
Plus en détailBonnes pratiques de développement JavaScript
Bonnes pratiques de développement JavaScript Titre présentation Conférencier François Béliveau Romain Dorgueil A propos de nous... François Béliveau Développeur web depuis 8 ans Utilise symfony depuis
Plus en détailNouveautés joomla 3 1/14
Nouveautés joomla 3 1/14 Table des matières 1 Responsive... 1 2 Bootstrap... 1 3 LESS CSS intégré... 1 4. JUI (pour les développeurs d'extensions)... 1 5. Le Mambo days vs le Génial UX... 2 6. 7 étapes
Plus en détailTP JEE Développement Web en Java. Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web.
ASTRIUM - Toulouse JEE Formation 2013 TP JEE Développement Web en Java Dans ce TP nous commencerons la programmation JEE par le premier niveau d une application JEE : l application web. Figure 1 Architecture
Plus en détailINTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech. Crédits: Blaise Laflamme
INTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech Crédits: Blaise Laflamme Pyramid Pourquoi Pyramid Petit : ~ 5000 lignes de code Documenté : pratiquement tout est documenté Testé : 100% par des
Plus en détailPetite définition : Présentation :
Petite définition : Le Web 2.0 est une technologie qui permet la création de réseaux sociaux, de communautés, via divers produits (des sites communautaires, des blogs, des forums, des wiki ), qui vise
Plus en détailBien architecturer une application REST
Olivier Gutknecht Bien architecturer une application REST Avec la contribution de Jean Zundel Ce livre traite exactement du sujet suivant : comment faire pour que les services web et les programmes qui
Plus en détailFormation : WEbMaster
Formation : WEbMaster Objectif et Description : Centre Eclipse vous propose une formation complète WebMaster, vous permettant de : Utiliser dès maintenant les nouveautés du web2, ainsi alléger les besoins
Plus en détailProjet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :
CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE Projet 2 Gestion des services enseignants G r o u p e : B E L G H I T Y a s m i n e S A N C H E Z - D U B R O N T Y u r i f e r M O N T A Z E R S i
Plus en détailPrésentation du PL/SQL
I Présentation du PL/ Copyright Oracle Corporation, 1998. All rights reserved. Objectifs du Cours A la fin de ce chapitre, vous saurez : Décrire l intéret du PL/ Décrire l utilisation du PL/ pour le développeur
Plus en détailAvant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4
Les exemples cités tout au long de cet ouvrage sont téléchargeables à l'adresse suivante : http://www.editions-eni.fr. Saisissez la référence ENI de l'ouvrage EP5EJAV dans la zone de recherche et validez.
Plus en détailSYSTÈMES D INFORMATIONS
SYSTÈMES D INFORMATIONS Développement Modx Les systèmes de gestion de contenu Les Content Management Système (CMS) servent à simplifier le développement de sites web ainsi que la mise à jour des contenus.
Plus en détailArchitecture Orientée Service, JSON et API REST
UPMC 3 février 2015 Précedemment, en LI328 Architecture générale du projet Programmation serveur Servlet/TOMCAT Aujourd hui Quelques mots sur les SOA API - REST Le format JSON API - REST et Servlet API
Plus en détailTutoriel: Création d'un Web service en C++ avec WebContentC++Framework
Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework Gaël de Chalendar CEA LIST / LIC2M Journée de Présentation des Technologies WebContent INSTN 14/12/2009 Présentation de gsoap Plan
Plus en détail4D Web 2.0 Pack DATA LIVES HERE. TM. Internet Riche et Solutions Mobiles en toute simplicité. 4D Ajax Framework 4D Ajax for Dreamweaver 4D for Flex
DATA LIVES HERE. TM 4D Web 2.0 Pack Internet Riche et Solutions Mobiles en toute simplicité 4D Ajax Framework 4D Ajax for Dreamweaver 4D for Flex *Faites vivre vos données 4D Web 2.0 Pack fournit aux développeurs
Plus en détailComment développer et intégrer un module à PhpMyLab?
Comment développer et intégrer un module à PhpMyLab? La structure du fichier Afin de conserver une homogénéité et une cohérence entre chaque module, une structure commune est utilisée pour chacun des modules
Plus en détail25 mars. Tutoriel sur Laravel. Préparé par : Lydiane Beaulne-Bélisle. Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel.
25 mars Tutoriel sur Laravel Préparé par : Lydiane Beaulne-Bélisle Ceci est un tutorial qui montre comment débuter avec le Framework PHP Laravel. Créé pour le cours de Projet de fin d étude Collège de
Plus en détailCursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement
Cursus Outils & Développement Vous êtes Consultant, Chef de Projets, Directeur des Systèmes d Information, Directeur Administratif et Financier, Optez pour les «formations Produits» Nous vous proposons
Plus en détailCompte Rendu d intégration d application
ISMA 3EME ANNEE Compte Rendu d intégration d application Compte Rendu Final Maxime ESCOURBIAC Jean-Christophe SEPTIER 19/12/2011 Table des matières Table des matières... 1 Introduction... 3 1. Le SGBD:...
Plus en détailLes outils de création de sites web
Tuto 1ère séance - p1 Les outils de création de sites web Sources : Réalisez votre site web avec HTML5 et CSS3 de Mathieu Nebra (Edition Le Livre du Zéro) site fr.openclassrooms.com (anciennement «site
Plus en détailMaster1 ère année. Réseaux avancés I. TP nº5 filière ISICG
Master1 ère année Réseaux avancés I TP nº5 filière ISICG Utilisation de la microplateforme Bottle et du framework AngularJS La «micro web-framework» Bottle pour Python Les principales caractèristiques
Plus en détailDOM - Document Object Model
DOM - Document Object Model 1 But de DOM Interfacer les langages de programmation avec les documents XML en les associant avec un modèle orienté objet DOM permet aux programmes et scripts : d'accéder et
Plus en détailModule Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP
Module Com231A - Web et Bases de Données Notion 5 : Formulaires et utilisation des Bases de Données avec PHP Au cours de ce TP, vous allez voir comment PHP permet aux utilisateurs, une interaction avec
Plus en détailles techniques d'extraction, les formulaires et intégration dans un site WEB
les techniques d'extraction, les formulaires et intégration dans un site WEB Edyta Bellouni MSHS-T, UMS838 Plan L extraction des données pour un site en ligne Architecture et techniques Les différents
Plus en détailRapport de Stage Christopher Chedeau 2 au 26 Juin 2009
Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009 «Web. De l intégration de pages statiques HTML à un CMS, à la dynamisation d un site grâce au Javascript et l utilisation de nouvelles technologies
Plus en détailSYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8
SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8 INTRODUCTION Bonjour à tous; Aujourd hui je publie une nouvelle version de l adaptation de la Sync Framework Toolkit,
Plus en détailCyrille GUERIN cyrille@cyrgue.com 823, place Soulanges 514 967-3529 Brossard, J4X1L8
Cyrille GUERIN cyrille@cyrgue.com 823, place Soulanges 514 967-3529 Brossard, J4X1L8 16 années d expérience dans la conception d applications WEB, JAVA/J2EE/Javascript COMPÉTENCES Architecture, conception
Plus en détailSHERLOCK 7. Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5
SHERLOCK 7 Version 1.2.0 du 01/09/09 JAVASCRIPT 1.5 Cette note montre comment intégrer un script Java dans une investigation Sherlock et les différents aspects de Java script. S T E M M E R I M A G I N
Plus en détailBureautique Initiation Excel-Powerpoint
Module de Formation Personnalisée : Bureautique Initiation Excel-Powerpoint Durée : jours ouvrables Prix : Formation personnalisée en vue d obtenir les notions de base indispensables pour : Excel Office
Plus en détailFORMATION PcVue. Mise en œuvre de WEBVUE. Journées de formation au logiciel de supervision PcVue 8.1. Lieu : Lycée Pablo Neruda Saint Martin d hères
FORMATION PcVue Mise en œuvre de WEBVUE Journées de formation au logiciel de supervision PcVue 8.1 Lieu : Lycée Pablo Neruda Saint Martin d hères Centre ressource Génie Electrique Intervenant : Enseignant
Plus en détailXML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)
Présentation du langage XML 1. De SGML à XML 17 2. Les bases de XML 18 2.1 Rappel sur HTML 18 2.2 Votre premier document XML 19 2.3 Les avantages de XML 21 3. La syntaxe XML 21 3.1 La première ligne du
Plus en détailOptimiser pour les appareils mobiles
chapitre 6 Optimiser pour les appareils mobiles 6.1 Créer un site adapté aux terminaux mobiles avec jquery Mobile... 217 6.2 Transformer son site mobile en application native grâce à PhoneGap:Build...
Plus en détailModule BD et sites WEB
Module BD et sites WEB Cours 8 Bases de données et Web Anne Doucet Anne.Doucet@lip6.fr 1 Le Web Architecture Architectures Web Client/serveur 3-tiers Serveurs d applications Web et BD Couplage HTML-BD
Plus en détailWebmaster / Webdesigner / Wordpress
Webmaster / Webdesigner / Wordpress Pré-requis : Projet professionnel. Bonne maîtrise de l'ordinateur. Bases en infographie et / ou traitement de texte fortement recommandées. Objectifs : Concevoir un
Plus en détailINF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30
Examen intra 20 février 2014 17:30 à 20:30 Nom, prénom : Code permanent : Répondez directement sur le questionnaire. Question #1 5% Quelle influence peut avoir le typage dynamique sur la maintenabilité
Plus en détailBES WEBDEVELOPER ACTIVITÉ RÔLE
BES WEBDEVELOPER ACTIVITÉ Le web developer participe aux activités concernant la conception, la réalisation, la mise à jour, la maintenance et l évolution d applications internet/intranet statiques et
Plus en détailFailles XSS : Principes, Catégories Démonstrations, Contre mesures
HERVÉ SCHAUER CONSULTANTS Cabinet de Consultants en Sécurité Informatique depuis 1989 Spécialisé sur Unix, Windows, TCP/IP et Internet Séminaire 15 ans HSC Failles XSS : Principes, Catégories Démonstrations,
Plus en détailChapitre 1 : Introduction aux bases de données
Chapitre 1 : Introduction aux bases de données Les Bases de Données occupent aujourd'hui une place de plus en plus importante dans les systèmes informatiques. Les Systèmes de Gestion de Bases de Données
Plus en détailAjax, RIA et HTML5. 9.1 Prise en charge d Ajax
9 Ajax, RIA et HTML5 Au soaire de ce chapitre UU Prise en charge d Ajax UU Bibliothèques JavaScript UU Extensions CSS de WebKit UU Applications Internet riches mobiles UU HTML5 Ajax, HTML5 et RIA, coent
Plus en détailIntroduction à. Oracle Application Express
Introduction à Oracle Application Express Sommaire Qu est-ce que Oracle Application Express (APEX)? Vue d ensemble des fonctionnalités et des différents composants d Oracle APEX Démonstration de création
Plus en détailS7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i
Modernisation IBM i Nouveautés 2014-2015 IBM Power Systems - IBM i 19 et 20 mai 2015 IBM Client Center, Bois-Colombes S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i Mardi
Plus en détailInstallation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6
Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6 1 BERNIER François http://astronomie-astrophotographie.fr Table des matières Installation d un serveur HTTP (Hypertext Transfer
Plus en détailMagento. Magento. Réussir son site e-commerce. Réussir son site e-commerce BLANCHARD. Préface de Sébastien L e p e r s
Mickaël Mickaël BLANCHARD BLANCHARD Préface de Sébastien L e p e r s Magento Préface de Sébastien L e p e r s Magento Réussir son site e-commerce Réussir son site e-commerce Groupe Eyrolles, 2010, ISBN
Plus en détailActivité sur Meteor. Annexe 1 : notion de client-serveur et notion de base de données
Activité sur Meteor Annexe 1 : notion de client-serveur et notion de base de données Notion de client-serveur Que se passe-t-il lorsque vous tapez dans la barre d'adresse de votre navigateur «http://www.google.fr»?
Plus en détailVérifier la qualité de vos applications logicielle de manière continue
IBM Software Group Vérifier la qualité de vos applications logicielle de manière continue Arnaud Bouzy Kamel Moulaoui 2004 IBM Corporation Agenda Analyse de code Test Fonctionnel Test de Performance Questions
Plus en détailCONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE
CONCOURS DE L AGRÉGATION INTERNE «ÉCONOMIE ET GESTION» SESSION 2015 SECONDE ÉPREUVE Épreuve de cas pratique dans la spécialité correspondant à l'option choisie par le candidat Option D Durée de préparation
Plus en détailArchitectures Web Services RESTful
Architectures Web Services RESTful Alexandre Denis Alexandre.Denis@inria.fr Inria Bordeaux Sud-Ouest France ENSEIRB PG306 REST REST Representational State Transfer Roy Fielding (2000) Décollage vers 2006-2007
Plus en détailMéthode de Test. Pour WIKIROUTE. Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel.
Méthode de Test Pour WIKIROUTE Rapport concernant les méthodes de tests à mettre en place pour assurer la fiabilité de notre projet annuel. [Tapez le nom de l'auteur] 10/06/2009 Sommaire I. Introduction...
Plus en détailPHP 5.4 Développez un site web dynamique et interactif
Editions ENI PHP 5.4 Développez un site web dynamique et interactif Collection Ressources Informatiques Table des matières Table des matières 1 Chapitre 1 Introduction 1. Objectif de l'ouvrage.............................................
Plus en détail1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel
Guide débuter avec WHM 1 / Introduction WHM signifie Web Host Manager (ou gestionnaire d'hébergement web). WHM va donc vous permettre de gérer des comptes d'hébergement pour vos clients. (création de compte,
Plus en détailModélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework
Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework L'objectif de ce document est de poser des bases de réflexion sur la modélisation d'un projet réalisé
Plus en détailFormation Webase 5. Formation Webase 5. Ses secrets, de l architecture MVC à l application Web. Adrien Grand <jpountz@via.ecp.fr> Centrale Réseaux
Formation Webase 5 Ses secrets, de l architecture MVC à l application Web Adrien Grand Centrale Réseaux Sommaire 1 Obtenir des informations sur Webase 5 2 Composants de Webase 5 Un
Plus en détailApplications et Services WEB: Architecture REST
Applications et : Erick Stattner Laboratoire LAMIA Université des Antilles et de la Guyane France erick.stattner@univ-ag.fr Guadeloupe 2014-2015 Erick Stattner Applications et : 1 / 90 Description du cours
Plus en détailFLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze
Programmation FLEX 3 Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder Aurélien Vannieuwenhuyze Avec la contribution de Romain Pouclet Groupe Eyrolles, 2009, ISBN : 978-2-212-12387-6
Plus en détailMysql. Les requêtes préparées Prepared statements
Mysql Les requêtes préparées Prepared statements Introduction Les prepared statements côté serveur sont une des nouvelles fonctionnalités les plus intéressantes de MySQL 4.1 (récemment sorti en production
Plus en détailExploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales
Exploration des technologies web pour créer une interaction entre Mahara et les plateformes professionnelles et sociales D 1.3.2 Rapport d analyse Auteurs: Johann Luethi, Laurent Opprecht, Patrick Roth
Plus en détailCRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING
CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING Durée : 3J / 21H Formateur : Consultant expert en PAO et Web-marketing. Groupe de : 4 max Formation au web marketing Objectifs : Mettre en oeuvre des
Plus en détailService d'authentification LDAP et SSO avec CAS
Service d'authentification LDAP et SSO avec CAS Clé de l'extension : ig_ldap_sso_auth 2006-2007, Michaël Gagnon, Ce document est publié sous la licence open source, disponible au
Plus en détailDéveloppement d applications Internet et réseaux avec LabVIEW. Alexandre STANURSKI National Instruments France
Développement d applications Internet et réseaux avec LabVIEW Alexandre STANURSKI National Instruments France Quelles sont les possibilités? Publication de données Génération de rapports et de documents
Plus en détailECLIPSE ET PDT (Php development tools)
ECLIPSE ET PDT (Php development tools) Eclipse Eclipse est un IDE (Integrated Development Environment)).C estun projet de la Fondation Eclipse visant à développer tout un environnement de développement
Plus en détailProjet de Veille Technologique
Projet de Veille Technologique Programmation carte à puce - JavaCard Ing. MZOUGHI Ines (i.mzoughi@gmail.com) Dr. MAHMOUDI Ramzi (mahmoudr@esiee.fr) TEST Sommaire Programmation JavaCard Les prérequis...
Plus en détailCQP Développeur Nouvelles Technologies (DNT)
ORGANISME REFERENCE STAGE : 26572 20 rue de l Arcade 75 008 PARIS CONTACT Couverture géographique : M. Frédéric DIOLEZ Bordeaux, Rouen, Lyon, Toulouse, Marseille Tél. : 09 88 66 17 40 Nantes, Lille, Strasbourg,
Plus en détailNouveautés de Drupal 8. Léon Cros @chipway
Nouveautés de Drupal 8 Léon Cros @chipway.. Léon Cros Communauté Drupal Président de l'association Drupal France et Francophonie @chipway / chipway-drupal. JDLL 2014. Chipway : Spécialiste Formations Drupal
Plus en détailProgramme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines)
Programme «Analyste Programmeur» Diplôme d état : «Développeur Informatique» Homologué au niveau III (Bac+2) (JO N 176 du 1 août 2003) (34 semaines) Module 1 : Programmer une application informatique Durée
Plus en détailDans nos locaux au 98 Route de Sauve 30900 NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur
FORMATION FORFAIT WEB DEVELOPPEUR Qualification ISQ OPQF Formacode 46 125 Certification de titre professionnel Web Designer + modules optionnels : Développement PHP/MySQL avancé, Web App, CMS e-boutique
Plus en détailSpip 2. Premiers pas pour créer son site web. Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Sandrine Burriel
Anne-Laure Quatravaux Dominique Quatravaux Spip 2 Premiers pas pour créer son site web Avec la contribution de Sandrine Burriel Groupe Eyrolles, 2009, ISBN : 978-2-212-12502-3 Pourquoi choisir Spip? Vous
Plus en détailFileMaker Server 11. Publication Web personnalisée avec XML et XSLT
FileMaker Server 11 Publication Web personnalisée avec XML et XSLT 2007-2010 FileMaker, Inc. Tous droits réservés. FileMaker, Inc. 5201 Patrick Henry Drive Santa Clara, Californie 95054 FileMaker est une
Plus en détailSeance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.
Seance 2: Complétion du code de jeu. (durée max: 2h) Mot clé const et pointeurs: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu. Implémentez jeu_recupere_piece
Plus en détailAlfstore workflow framework Spécification technique
Alfstore workflow framework Spécification technique Version 0.91 (2012-08-03) www.alfstore.com Email: info@alfstore.com Alfstore workflow framework 2012-10-28 1/28 Historique des versions Version Date
Plus en détailRefonte front-office / back-office - Architecture & Conception -
Refonte front-office / back-office - Architecture & Conception - GLG204 - Architectures Logicielles Java 2008/2009 Nom : Cédric Poisson Matricule : 06-49012 Version : 1.0 Jeudi 28 mai 2009 1 / 23 Table
Plus en détail1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7
Sommaire 1-Introduction 2 1-1- BPM (Business Process Management)..2 1-2 J-Boss JBPM 2 2-Installation de JBPM 3 2-1 Architecture de JOBSS JBPM 3 2-2 Installation du moteur JBoss JBPM et le serveur d application
Plus en détailManuel Utilisateur de l'installation du connecteur Pronote à l'ent
de l'installation du connecteur Pronote à l'ent Page : 1/28 SOMMAIRE 1 Introduction...3 1.1 Objectif du manuel...3 1.2 Repères visuels...3 2 Paramétrage de la connexion entre l'ent et Pronote...4 2.1 Informations
Plus en détailv7.1 SP2 Guide des Nouveautés
v7.1 SP2 Guide des Nouveautés Copyright 2012 Sage Technologies Limited, éditeur de ce produit. Tous droits réservés. Il est interdit de copier, photocopier, reproduire, traduire, copier sur microfilm,
Plus en détailCette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :
Développement d un client REST, l application Vélib 1. Présentation L application présentée permet de visualiser les disponibilités des vélos et des emplacements de parking à la disposition des parisiens
Plus en détailLes Utilisateurs dans SharePoint
Les Utilisateurs dans SharePoint La gestion des utilisateurs dans SharePoint SharePoint dont le cœur est l'outil collaboratif, Windows SharePoint Services. Chaque utilisateur (ou collaborateur) peut créer
Plus en détailFormation. Module WEB 4.1. Support de cours
Formation Module WEB 4.1 Support de cours Rédacteur Date de rédaction F.CHEA 08/02/2012 Les informations contenues dans ce document pourront faire l'objet de modifications sans préavis Sauf mention contraire,
Plus en détailConfigurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : 172.16.0.253 et un masque 255.255.0.0
RES_TP3 Objectifs : Les réseaux informatiques : Client - Serveur Utilisation de serveurs DHCP HTTP DNS FTP Configuration basique d un routeur Utilisation du simulateur CISCO PACKET TRACER G.COLIN Architecture
Plus en détail