Angular 2 – introduction


angularLe framework Angular 2 (successeur de AngularJS de Google) est un framework JavaScript pour créer des applications monopages (SPA: Signle Page Application), web et mobiles.

Types d’applications développées avec Angular ?

  • De petits widgets interactifs pour un site web existant (moteur de recherche, module de réservation). Exemple : virginamerica.com
  • Site web complet. Exemple : weather.com
  • Application mobile. Exemple : posse.com

Angular 2 (même en Release Candidate en date de mai 2016) est en production chez de gros fournisseurs. Voir angularexpo.com.

Tout savoir sur Angular : angular.io

Structure d’un projet Angular 2 créé à l’aide de la commande ng new test1NG (le framework arrive avec des commandes de angular-cli – Angular Command Line Interface) :

arbo_projet1

src : répertoire qui contient les sources de l’application. Il est conseillé d’avoir un « composant » par répertoire. app accueille le 1er composant. La page principale affichée est src/index.html. La balise <app-root> constitue le point d’entrée de l’affichage. Cette balise est définie dans le 1er composant.

Remarque : aucune introduction de fichier JS n’est opérée dans le fichier index.html. Ceci est fait lors de phase de compilation avec les commandes de angular-cli.

Au lancement, c’est avec le fichier src/main.ts que tout démarre. Ce fichier (comme tous les autres programmes) est écrit avec le langage Typescript. C’est un sur-ensemble de javascript. Les programmes écrits en ts sont compilés vers Javascript dans sa version ES5 ou ES6 sachant que la ES6 n’est pas encore entièrement supportée par tous les navigateurs.

Remarque : on peut également développer sous Angular avec le langage Dart !

Source de main.ts :

Le programme main.ts, exécuté en 1er, amorce (du verbe bootstrap) l’application en commençant parle module AppModule. Un module sous Angular est une collection de composants. Chaque composant se charge d’une tache particulière. Dans notre cas, AppModule contient un seul composant nommé AppComponent. AppModule est une classe décrite dans le fichier src/app/app.module.ts :

On remarque la dépendance de AppModule du composant AppComponent. AppModule amorce (bootstrap) donc AppComponent. Le tag imports énumère les modules utilisés par notre AppModule. Ici, le seul module vraiment utile est BrowserModule. Les autres ne sont utiles que si on traite des données en input (FormsModule) ou des requêtes HTTP (HttpModule) ce qui n’est pas le cas dans notre exemple jouet.

Un composant est la brique principale dans la construction d’une application. Toutes les zones d’une application sont produites par des composants :

app_composants

AppComponent est donc la racine de l’application. Un petit coup d’oeil sur ce composant (fichier src/app/app.component.ts) :

Le décorateur @Component a un paramètre JSON qui doit contenir au moins les 2 premiers tags : selector et templateUrl. Le sélecteur (qui peut être n’importe quel sélecteur comme les sélecteurs CSS) défini le tag HTML qui agit sur la page web qui le référence. Remarquons la balise <app-root> dans le fichier index.html plus haut. Le templateUrl indique le fichier HTML qui remplacerait le tag rencontré dans la page qui le contient. Voici le contenu de app.component.html :

 

Ici, Angular remplace dans le fichier index.html le texte <app-root>Loading…</app-root> par le contenu du fichier app.component.html après avoir évalué la propriété title de la classe AppComponent.

Remarque : Si on n’a pas trop de texte dans notre fichier template ou dans nos fichiers CSS, on peut utiliser du HTML et des ordre CSS directement en-ligne en les entourant par des anti-apostrophes : `

Le fichier app.component.ts contiendrait alors :

Ajout d’un autre composant

L’ajout d’un autre composant se fait facilement en ligne de commande par :

ng generate component nom_composant ou ng g c nom_composant

Ceci crée l’arborescence src/app/nom_composant avec les fichiers canonique d’un composant comme pour notre AppComponent.

Exemple : ng g c autre

Crée src/app/autre/autre.component.ts et autres fichiers :

Le fichier autre.component.html contient par exemple :

Sachant que AppComponent est le composant racine et que le tag <app-root> utilisé dans index.html interagit avec le composant racine, il faut utiliser le nouveau composant dans AppComponent mais directement dans index.html. Autrement dit, rien ne se passera si on décide que index.html contiendra :

Le tag <app-autre> ne sera pas interprété !

Exemple d’utilisation dans app.component.ts :

Après compilation, la page racine affiche le h1 suivi du paragraphe « autre works! ». Les dépendances sont gérées automatiquement lors de l’exécution de la ligne de commande de création du nouveau composant. Ainsi, le fichier app.module.ts devient :

Remarques :

  1. A chaque fois qu’on crée un composant à l’aide de : ng g c nom_composant, on crée un répertoire pour ce nouveau composant. On peut ne pas compliquer l’arborescence de notre projet en se plaçant au bon endroit (répertoire de nos composants) et ajouter l’option --flat. Les fichiers seront ajoutés dans le même répertoire.
  2. Si on veut créer un composant sans  fichier template ni fichier styles, on ajoute les option -is (pour inline-styles) et -it (inline-template) :
    ng g c --flat -is -it nom_composant
  3. Si la page contient plusieurs tags de même nature (ex <p>), le style défini dans un composant agit uniquement sur les tags de son template. Angular crée des attributs à ces tag et utilise ces attributs dans les styles CSS généré.
  4. Si le composant AppComponent insère du texte dans le tag d’un autre composant comme ici :

    Le texte à l’intérieur de <app-autre> n’apparaitra pas !
    Il faut pour cela utiliser le tag <ng-content> dans le template autre.compnent.html de AutreComponent. Exemple :

Laissez un commentaire

Votre adresse de messagerie ne sera pas publiée. Les champs obligatoires sont indiqués avec *