AngularJS. AngularJS 13/05/2015

Dimension: px
Commencer à balayer dès la page:

Download "AngularJS. AngularJS 13/05/2015"

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

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étail

AngularJS pour une application d'entreprise

AngularJS 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étail

Devenez un véritable développeur web en 3 mois!

Devenez 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étail

ASP.NET MVC 4 Développement d'applications Web en C# - Concepts et bonnes pratiques

ASP.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étail

Programmation Web. Madalina Croitoru IUT Montpellier

Programmation 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étail

INTERNET est un RESEAU D ORDINATEURS RELIES ENTRE EUX A L ECHELLE PLANETAIRE. Internet : interconnexion de réseaux (anglais : net = réseau)

INTERNET 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étail

HTML5. Développement d applications Web. Visual Studio 2015 et TFS. L art et la manière. avec. Philippe DIDIERGEORGES

HTML5. 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étail

Dé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 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étail

3W 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 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étail

Auteur 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 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étail

DA MOTA Anthony - Comparaison de technologies : PhoneGap VS Cordova

DA 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étail

WEB & 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 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étail

Serveur d'application Client HTML/JS. Apache Thrift Bootcamp

Serveur 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étail

4. SERVICES WEB REST 46

4. 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étail

EXTENSION de Microsoft Dynamics CRM 2013. Réf FR 80452

EXTENSION 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étail

Les grandes facettes du développement Web Nicolas Thouvenin - Stéphane Gully

Les 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étail

Point 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 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étail

AJAX. (Administrateur) (Dernière édition) Programme de formation. France, Belgique, Suisse, Roumanie - Canada

AJAX. (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étail

Présentation du Framework BootstrapTwitter

Pré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étail

TP JAVASCRIPT OMI4 TP5 SRC1 2011-2012

TP 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étail

Langage HTML (2 partie) <HyperText Markup Language> <tv>lt La Salle Avignon BTS IRIS</tv>

Langage 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étail

Joomla! Création et administration d'un site web - Version numérique

Joomla! 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étail

Le stockage local de données en HTML5

Le 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étail

NFA016 : Introduction. Pour naviguer sur le Web, il faut : Naviguer: dialoguer avec un serveur web

NFA016 : 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étail

Bonnes pratiques de développement JavaScript

Bonnes 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étail

Nouveautés joomla 3 1/14

Nouveauté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étail

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.

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. 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étail

INTRODUCTION À PYRAMID Gaël Pasgrimaud @gawel_ Bearstech. Crédits: Blaise Laflamme

INTRODUCTION À 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étail

Petite définition : Présentation :

Petite 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étail

Bien architecturer une application REST

Bien 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étail

Formation : WEbMaster

Formation : 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étail

Projet 2. Gestion des services enseignants CENTRE D ENSEIGNEMENT ET DE RECHERCHE EN INFORMATIQUE. G r o u p e :

Projet 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étail

Présentation du PL/SQL

Pré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étail

Avant-propos 1. Avant-propos...3 2. Organisation du guide...3 3. À qui s'adresse ce guide?...4

Avant-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étail

SYSTÈMES D INFORMATIONS

SYSTÈ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étail

Architecture Orientée Service, JSON et API REST

Architecture 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étail

Tutoriel: Création d'un Web service en C++ avec WebContentC++Framework

Tutoriel: 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étail

4D 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

4D 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étail

Comment développer et intégrer un module à PhpMyLab?

Comment 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étail

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.

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. 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étail

Cursus Sage ERP X3 Outils & Développement. Le parcours pédagogique Sage ERP X3 Outils et Développement

Cursus 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étail

Compte Rendu d intégration d application

Compte 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étail

Les outils de création de sites web

Les 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étail

Master1 è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 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étail

DOM - Document Object Model

DOM - 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étail

Module 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 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étail

les 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 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étail

Rapport de Stage Christopher Chedeau 2 au 26 Juin 2009

Rapport 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étail

SYNC 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 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étail

Cyrille 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 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étail

SHERLOCK 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 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étail

Bureautique Initiation Excel-Powerpoint

Bureautique 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étail

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

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 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étail

XML par la pratique Bases indispensables, concepts et cas pratiques (3ième édition)

XML 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étail

Optimiser pour les appareils mobiles

Optimiser 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étail

Module BD et sites WEB

Module 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étail

Webmaster / Webdesigner / Wordpress

Webmaster / 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étail

INF2015 Développement de logiciels dans un environnement Agile. Examen intra 20 février 2014 17:30 à 20:30

INF2015 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étail

BES WEBDEVELOPER ACTIVITÉ RÔLE

BES 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étail

Failles XSS : Principes, Catégories Démonstrations, Contre mesures

Failles 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étail

Chapitre 1 : Introduction aux bases de données

Chapitre 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étail

Ajax, RIA et HTML5. 9.1 Prise en charge d Ajax

Ajax, 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étail

Introduction à. Oracle Application Express

Introduction à. 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étail

S7 Le top 10 des raisons d utiliser PHP pour moderniser votre existant IBM i

S7 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étail

Installation d un serveur HTTP (Hypertext Transfer Protocol) sous Débian 6

Installation 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étail

Magento. 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

Magento. 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étail

Activité 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 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étail

Vérifier la qualité de vos applications logicielle de manière continue

Vé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étail

CONCOURS 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 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étail

Architectures Web Services RESTful

Architectures 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étail

Mé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. 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étail

PHP 5.4 Développez un site web dynamique et interactif

PHP 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étail

1 / Introduction. 2 / Gestion des comptes cpanel. Guide débuter avec WHM. 2.1Créer un package. 2.2Créer un compte cpanel

1 / 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étail

Modé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 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étail

Formation 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. 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étail

Applications et Services WEB: Architecture REST

Applications 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étail

FLEX 3. Applications Internet riches avec Flash ActionScript 3, MXML et Flex Builder. Aurélien Vannieuwenhuyze

FLEX 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étail

Mysql. Les requêtes préparées Prepared statements

Mysql. 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étail

Exploration 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 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étail

CRÉER, ROUTER ET GÉRER UNE NEWSLETTER, UN E-MAILING

CRÉ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étail

Service d'authentification LDAP et SSO avec CAS

Service 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étail

Dé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 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étail

ECLIPSE ET PDT (Php development tools)

ECLIPSE 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étail

Projet de Veille Technologique

Projet 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étail

CQP Développeur Nouvelles Technologies (DNT)

CQP 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étail

Nouveautés de Drupal 8. Léon Cros @chipway

Nouveauté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étail

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)

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) 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étail

Dans nos locaux au 98 Route de Sauve 30900 NÎMES. Un ordinateur PC par stagiaire, scanner, imprimante/copieur laser couleur

Dans 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étail

Spip 2. Premiers pas pour créer son site web. Anne-Laure Quatravaux Dominique Quatravaux. Avec la contribution de Sandrine Burriel

Spip 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étail

FileMaker Server 11. Publication Web personnalisée avec XML et XSLT

FileMaker 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étail

Seance 2: En respectant la méthode de programmation par contrat, implémentez les autres fonctions de jeu.

Seance 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étail

Alfstore workflow framework Spécification technique

Alfstore 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étail

Refonte front-office / back-office - Architecture & Conception -

Refonte 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étail

1-Introduction 2. 2-Installation de JBPM 3. 2-JBPM en action.7

1-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étail

Manuel Utilisateur de l'installation du connecteur Pronote à l'ent

Manuel 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étail

v7.1 SP2 Guide des Nouveautés

v7.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étail

Cette application développée en C# va récupérer un certain nombre d informations en ligne fournies par la ville de Paris :

Cette 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étail

Les Utilisateurs dans SharePoint

Les 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étail

Formation. Module WEB 4.1. Support de cours

Formation. 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étail

Configurer le Serveur avec une adresse IP Statique (INTERFACE :FastEthernet) : 172.16.0.253 et un masque 255.255.0.0

Configurer 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