1. INSTALLATION... 2 2. CREATION D UN PROJET TYPESCRIPT... 3 3. ANGULAR AVEC TYPESCRIPT... 5. «Main»... 5 «Sous modules»... 5



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

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

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

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

Projet de programmation (IK3) : TP n 1 Correction

SYNC FRAMEWORK AVEC SQLITE POUR APPLICATIONS WINDOWS STORE (WINRT) ET WINDOWS PHONE 8

Extended communication server 4.1 : VoIP SIP service- Administration

4. SERVICES WEB REST 46

INTRODUCTION A JAVA. Fichier en langage machine Exécutable

Créer une «application web» avec AngularJS, nodejs et mongodb v Brouillon

Play.Rules Return. Contents. October 18, Remerciements 2

Architectures Web Services RESTful

TP1 : Initiation à Java et Eclipse

Auto-évaluation Programmation en Java

Construire une application marketing Facebook sur la plateforme Windows Azure

Document Object Model (DOM)

RAPPORT AUDIT SEO. Élaboré à l'attention de : Monsieur Greber Élaboré par : Cédric Peinado

TP1. Outils Java Eléments de correction

Module.NET 3 Les Assemblys.NET

TP1 : Initiation à Java et Eclipse

< Atelier 1 /> Démarrer une application web

Le Modèle de Sécurité dans JAVA

Démonstration de la mise en cache via HTML 5 sur iphone

Documentation CAS à destination des éditeurs

Auteur LARDOUX Guillaume Contact Année 2014 DEVELOPPEMENT MOBILE AVEC CORDOVA

Programmation Internet Cours 4

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.

Modélisation PHP Orientée Objet pour les Projets Modèle MVC (Modèle Vue Contrôleur) Mini Framework

Java Licence Professionnelle Cours 7 : Classes et méthodes abstraites

COMPRENDRE L ARCHITECTURE DES WEB SERVICES REST. Amosse EDOUARD, Doctorant

RMI. Remote Method Invocation: permet d'invoquer des méthodes d'objets distants.

Mise en œuvre des serveurs d application

HTML, CSS, JS et CGI. Elanore Elessar Dimar

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

Création d une application JEE

Programmer en JAVA. par Tama

Remote Method Invocation (RMI)

Tp 1 correction. Structures de données (IF2)

Informatique : Création de site Web Master 2 ANI TP 1

Utilisation de Jakarta Tomcat

Web Tier : déploiement de servlets

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

AngularJS pour une application d'entreprise

IFT287 Exploitation de base de données relationnelles et orientées objet. Laboratoire Mon premier programme Java en Eclipse

Android et le Cloud Computing

LMI 2. Programmation Orientée Objet POO - Cours 9. Said Jabbour. jabbour@cril.univ-artois.fr

Documentation Technique

L'API DOM : Document Object Model

Alfstore workflow framework Spécification technique

Plan du cours. Historique du langage Nouveautés de Java 7

Construire des plug-ins pour SAS Management Console SAS 9.1

Institut Supérieur de Gestion. Cours pour 3 ème LFIG. Java Enterprise Edition Introduction Bayoudhi Chaouki

Module Criteo Tags et Flux pour Magento

DOM - Document Object Model

Gestion du cache dans les applications ASP.NET

PPE Installation d un serveur FTP

Présentation du langage et premières fonctions

Aspects techniques : guide d interfaçage SSO

Package Java.util Classe générique

Master1 ère année. Réseaux avancés I. TP nº5 filière ISICG

Paris Airports - Web API Airports Path finding

WEB & DÉVELOPPEMENT LES BASES DU WEB LE LANGAGE HTML FEUILLES DE STYLES CSS HISTORIQUE D INTERNET ET DU WEB LES DIFFÉRENTS LANGAGES

Programme Compte bancaire (code)

Corrigé des exercices sur les références

Sécurité des applications web. Daniel Boteanu

Procédure d installation d AMESim 4.3.0

Outils logiciels pour l'ingénierie documentaire

Classe ClInfoCGI. Fonctions membres principales. Gestion des erreurs

INF8007 Langages de script

SOAP Concepts Application à Glassfish

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

Cours 1: Java et les objets

OpenPaaS Le réseau social d'entreprise

ECLIPSE ET PDT (Php development tools)

Java 1.5 : principales nouveautés

Bonnes pratiques de développement JavaScript

Première coupe : Introduction à la plateforme Java EE JAVA JAVA. Introduction à la plateforme Java EE. Introduction à la plateforme Java EE

PROJET AZURE (par Florent Picard, A2011)

La base de données XML exist. A. Belaïd

Java Licence professionnelle CISII,

Création d installateurs pour Windows avec InnoSetup

Programmation Orientée Objet

INITIATION AU LANGAGE JAVA

Une introduction à Java

Programmation Objet Java Correction

N Cour Exam Thème Durée New Installing and Configuring Windows Server J New Administering Windows Server J

Exceptions. 1 Entrées/sorties. Objectif. Manipuler les exceptions ;

Génie Logiciel avec Ada. 4 février 2013

Module BD et sites WEB

Pour signifier qu'une classe fille hérite d'une classe mère, on utilise le mot clé extends class fille extends mère

Calcul Parallèle. Cours 5 - JAVA RMI

Encapsulation. L'encapsulation consiste à rendre les membres d'un objet plus ou moins visibles pour les autres objets.

Remote Method Invocation Les classes implémentant Serializable

Java Naming and Directory Interface

Approche Contract First

TD Objets distribués n 3 : Windows XP et Visual Studio.NET. Introduction à.net Remoting

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

Transcription:

1 TypeScript 1. INSTALLATION... 2 2. CREATION D UN PROJET TYPESCRIPT... 3 A. AVEC VISUAL STUDIO... 3 B. AVEC VISUAL STUDIO CODE... 3 C. CREATION D UN SERVEUR AVEC «HTTP-SERVER»... 4 3. ANGULAR AVEC TYPESCRIPT... 5 A. MODULES... 5 «Main»... 5 «Sous modules»... 5 B. CONTROLEURS... 6 C. ENTITES... 7 Avec namespace et export... 7 Héritage... 8 D. SERVICES... 9 TypeScript est un «superset de JavaScript» permettant d écrire en «orienté objet» (interfaces, classes, constructeurs, etc.) avec un typage fort. On crée un fichier *.ts, le compilateur TypeScript (tsc) génère alors le code JavaScript correspondant. Les fichiers de définitions TypeScript *.d.ts (pour Angular par exemple) permettent notamment d avoir l IntelliSense. Site

2 1. Installation Inclus avec Visual Studio ou 1. npm : Installer «Node Package Manager» Node.js 2. tsc : Installer TypeScript avec npm (pour pouvoir compiler les fichiers *.ts vers *.js) npm install -g typescript On peut vérifier la version de tsc installée depuis une invite de commande «tsc v». 3. tsd : Installer «TypeScript Definition Manager» definitelytyped npm install tsd -g Puis pour Installer des fichiers de definition *.d.ts... exemple avec Angular. Depuis une invite de commande naviguer jusqu au dossier du projet puis tsd install angular --resolve --save Le fichier *.d.ts est ajouté dans un dossier «typings» du projet. Ce dossier est créé s il n existe pas. ainsi qu un fichier tsd.json à la racine du projet "version": "v4", "repo": "borisyankov/definitelytyped", "ref": "master", "path": "typings", "bundle": "typings/tsd.d.ts", "installed": "angularjs/angular.d.ts": "commit": "e95958ac847d9a343bdc8d7cbc796a5f6da29f71", "jquery/jquery.d.ts": "commit": "e95958ac847d9a343bdc8d7cbc796a5f6da29f71"

3 2. Création d un projet TypeScript a. Avec Visual Studio Visual Studio 2015 Créer un projet «Application Web Asp.Net» vide. Pour ajouter des fichiers TypeScript *.ts, soit ajouter un nouvel élément fichier TypeScript, soit utiliser le raccourci du menu contextuel sur le projet. La compilation des fichiers TypeScript *.ts se fait en même temps que la «génération» du projet. b. Avec Visual Studio Code Visual Studio Code 1. Créer un dossier (vide) pour le projet. 2. Ouvrir ce dossier avec Visual Studio Code 3. Créer un fichier tsconfig.json "compileroptions": "target": "ES5" Puis créer des fichiers *.ts. Compilation avec le raccourci «CTRL + SHIFT + B» Exemple création d un fichier «HelloWorld.ts» function SayHello() let message = "Bonjour!"; alert(message); 4. A la première compilation configurer le «Task Runner» le fichier «tasks.json» est généré. La ligne args définit le fichier à compiler // args is the HelloWorld program to compile. "args": ["HelloWorld.ts"], Le fichier TypeScript Le fichier JavaScript généré

4 Création de la page d index <html> <body> <input type="button" onclick="sayhello();" value="click!"/> <script src="helloworld.js"></script> </body> </html> c. Création d un serveur avec «http-server» Depuis une invite de commande npm install -g http-server Lancer le serveur avec la commande http-server Note il est possible d ouvrir une invite de commande depuis Visual Studio Code («ctrl+c» pour arrêter le serveur) Dans browser

5 3. Angular avec TypeScript tsd : installer les fichiers de définition *.d.ts pour chaque dépendance tsd install angular --resolve save tsd install angular-route --resolve save tsd install angular-resource --resolve save // etc. a. Modules «Main» module app var main = angular.module("app", ["ngroute"]); Injection main.config(routeconfig); Routes routeconfig.$inject = ["$routeprovider"]; function routeconfig($routeprovider: ng.route.irouteprovider): void $routeprovider.when("/people", templateurl: "app/people/peopleview.html", «ng» ou «angular» controller: "PeopleController as vm" ).otherwise("/people"); «Sous modules» Exemple enregistrement du module «common.services» module app.common angular.module("common.services", ["ngresource"]); Ajout de la dépendance au module principal module app var main = angular.module("app", ["ngroute", "ngresource", "common.services"]); //etc.

6 b. Contrôleurs module app interface IPeopleController people: any[]; class PeopleController implements IPeopleController people: any[]; constructor() this.title = "Contacts Twitter"; this.people = [ "id": 1, "name": "Marie Bellin", "twitter": "mariebellin123", "id": 2, "name": "Jérôme Romagny", "twitter": "romagny13" ]; // méthodes angular.module("app").controller("peoplecontroller", PeopleController); Avec entité Interface module app interface IPeopleController people: app.domain.person[]; class PeopleController implements IPeopleController people: app.domain.person[]; Classe implémentant l interface (propriétés en premier, puis constructeur et méthodes) Enregistrement constructor() this.title = "Contacts Twitter"; this.people = [ id: 1, name: "Marie Bellin", twitter: "mariebellin123", id: 2, name: "Jérôme Romagny", twitter: "romagny13" ]; // méthodes angular.module("app").controller("peoplecontroller", PeopleController); Ce n est plus du JSON donc les propriétés ne sont plus entre guillements

7 c. Entités Exemple création de «person.ts» interface IPerson Equivaut à name: string; class Person implements IPerson constructor(public name: string) «public» : déclaration + affectation «automatiques» interface IPerson name: string; class Person implements IPerson name: string; constructor(name: string) this.name = name; Autre exemple interface IPerson id: number; name: string; birthday: Date; twitter: string; Méthode, définition du type de retour sayhello(): void; class Person implements IPerson constructor(public id: number, Implémentation, constructeur public name: string, avec variables «public» public birthday: Date, public twitter: string) sayhello(): void alert("bonjour " + this.name + "!"); Avec namespace et export module app.domain export interface IPerson id: number; name: string; birthday: Date; twitter: string; sayhello(): string; export class Person implements IPerson constructor(public id: number, public name: string, public birthday: Date, public twitter: string) sayhello(): string return "Bonjour " + this.name + "!";

8 Code généré «person.js» var app; (function (app) var domain; (function (domain) var Person = (function () function Person(id, name, birthday, twitter) this.id = id; this.name = name; this.birthday = birthday; this.twitter = twitter; Person.prototype.sayHello = function () return "Bonjour " + this.name + "!"; ; return Person; )(); domain.person = Person; )(domain = app.domain (app.domain = )); )(app (app = )); Héritage // interface IPerson // classe Person class student extends Person constructor(public id: number, public name: string, public birthday: Date, public twitter: string, public school :string) super(id,name,birthday,twitter); sayhello(): string return "Bonjour!"; Appel au constructeur de la classe base. «super» permet également l accès aux membres de la classe de base. Redéfinition de la méthode de la classe de base

9 d. Services Exemple $resource module app.common export interface IPeopleService getpeopleresource(): ng.resource.iresourceclass<ipeopleresource>; export interface IPeopleResource extends ng.resource.iresource<app.domain.person> export class PeopleService implements IPeopleService static $inject = ["$resource"]; constructor(private $resource: ng.resource.iresourceservice) getpeopleresource(): ng.resource.iresourceclass<ipeopleresource> return this.$resource("http://localhost:3000/api/people"); angular.module("common.services").service("peopleservice", PeopleService); Référencer le service dans la page d index. <!DOCTYPE html> <html> <head> <meta http-equiv="content-type" content="text/html; charset=utf-8"/> <title>typescript Demo</title> <meta charset="utf-8" /> </head> <body ng-app="app"> <div class="container"> <ng-view></ng-view> </div> <!-- Lib --> <script src="lib/angular.js"></script> <script src="lib/angular-resource.js"></script> <script src="lib/angular-route.js"></script> <!-- app --> <script src="app/app.js"></script> <!-- Domain --> <script src="app/people/person.js"></script> <!-- Services --> <script src="app/common/services/common.services.js"></script> <script src="app/common/services/peopleservice.js"></script> <!-- Controllers --> <script src="app/people/peoplecontroller.js"></script> </body> </html>

10 Utilisation du service dans un contrôleur module app // interface interface IPeopleController people: app.domain.iperson[]; // classe class PeopleController implements IPeopleController // propriétés people: app.domain.iperson[]; // constructeur static $inject = ["peopleservice"]; constructor(private peopleservice: app.common.peopleservice) this.title = "Contacts Twitter"; this.people = []; var peopleresource = peopleservice.getpeopleresource(); peopleresource.query((data: app.domain.iperson[]) => this.people = data; ); // méthodes // enregistrement angular.module("app").controller("peoplecontroller", PeopleController); Côté serveur (Node.js avec Express) var express = require('express'); var app = express(); app.use(function (req, res) res.setheader('access-control-allow-origin', '*'); res.setheader('access-control-allow-methods', '*'); res.setheader('access-control-allow-headers', '*'); ); // GET ALL app.get('/api/people', function (req, res) var people = [ id: 1, name: "M. Bellin", twitter: "mariebellin123", id: 2, name: "J. Romagny", twitter: "romagny13" ]; res.set("content-type", "application/json"); res.send(200, people); ); app.listen(3000); console.log("listen on port 3000"); Injection du service Utilisation du service

11 Projet