Reconversion développement web formation générale

Problème à signaler:


Télécharger Reconversion développement web formation générale



★★★★★★★★★★3.5 étoiles sur 5 basé sur 1 votes.
Votez ce document:

 

?

IG2I, Centrale Lille.

Objectif du cours

•  Initiation à la programmation web côté client

•  Conception de sites web efficaces

•  Acquisition de bonnes pratiques + culture du web

•  Conception d’applications internet riches

•  Complémentaire à l’UE application web côté serveur

Organisation

Enseignement :

•  Deux he

ures de cours par semaine

•  Deux heures de TP par semaine

Le cours présente différents concepts dans un cadre général, les TPs permettent une application plus ou moins directe.

Evaluation :

•  Rendu de code à chaque TP

•  Tp noté (2h)

•  Projet en groupe

Plan de la séance

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

Overview

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

Le Web en quelques mots

•   (au commencement) Protocole d’échange de documents (les pages Web)

•   Le format de fichier est HTML (on va revenir dessus), spécifié par le W3C • Les fichiers sont stockés sur des serveurs Web

•   Des clients (les navigateurs Web) se connectent au serveur en utilisant le protocole HTTP (protocole d’application au dessus de TCP/IP).

•   Les ressources sont identifiées par des URLs (des chaînes de caractères au format proto://machine:port/chemin/vers/la/ressource).

•   Les documents HTML contiennent des liens hypertexte qui permettent de naviguer de pages en pages via des URLs. Les ressources d’une page (images, scripts, feuilles de style, . . . ) sont aussi dénotées par des URLs.

•   Le navigateur Web récupère les ressources et assure le rendu (souvent graphique) de la page.

Comment ça marche

 

Programmation web client/serveur

•  Côté serveur

Execution réalisée sur le serveur (PHP, Servlet)

Resultat de l’exécution : page HTML envoyée par le serveur au navigateur

•  Côté client

Execution réalisée sur le client

Navigateur capable de realiser l’exécution

Transfert du code EMBARQUÉS dans la page HTML, depuis le serveur vers le client (HTML-embedded scripting)

Exemples : Scripts Javascript, Applets Java, ActiveX, Ajax

Exemple

 

Overview

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

HTML

•  HyperText Markup Language : langage de mise en forme de documents hypertextes (texte + liens vers d’autres documents). Développé au CERN en 1989 par Tim Berners-Lee.

 

•  1991 : premier navigateur en mode texte

•  1993 : premier navigateur graphique (mosaic) développé au NCSA

(National Center for Supercomputing Applications)

 

Document HTML

•   Est un document semi-structuré

•   Dont la structure est donnée par des balises

Exemple

Rendu par défaut

Un texte <b>en gras</b>

Un texte en gras

<a href=";>Un lien</a>

Un lien

<ul >

<li>Point 1</li>

<li>Point 2</li>

</ul>

• Point 1 • Point 2

•   On dit que <toto> est une balise ouvrante et </toto> une balise fermante. On peut écrire <toto/> comme raccourci pour <toto></toto>.

Un peu d’histoire

1973 : GML, Generalised Markup Language développé chez IBM. Introduction de la notion de balise.

1980 : SGML, Standardised GML, adopté par l’ISO

1989 : HTML, basé sur SGML. Plusieurs entreprises (microsoft,netscape, ) interprètent le standard de manière différente

1996 : XML, eXtensible Markup Language norme pour les documents semistructurés (SGML simplifié)

2000 : XHTML, version de HTML suivant les conventions XML

2008 : Première proposition pour le nouveau standard, HTML5

2014 : Standardisation de HTML5

XHTML vs HTML

•   XHTML version « XML » de HTML. Principales différences :

Les balises sont bien parenthésées (<a> <c> </c> </b> est interdit)

Les balises sont en minuscules

•   Les avantages sont les suivants

 HTML autorise les mélanges majuscule/minuscule, de ne pas fermer certaines balise . . . Les navigateurs corrigent ces erreurs de manières différentes

 Le document est structuré comme un programme informatique (les balises ouvrantes/fermantes correspondent à {et }). Plus simple à débugger.

Rôle de XHTML

•      Séparer la structure du document de son rendu. La structure donne une sémantique au document :

Ceci est un titre

Ceci est un paragraphe

Ceci est un ensemble de caractères importants

•      Cela permet au navigateur d’assurer un rendu en fonction de la sémantique. Il existe différents types de rendus:

Graphique interactif (Chrome, Firefox, Internet Explorer, . . . )

Texte interactif (Lynx, navigateur en mode texte)

Graphique statique (par ex: sur livre électronique)

Graphique pour petit écran (terminal mobile)

Exemple de document

 

Structure d’un document XHTML

Pour être valide un document XHTML contient au moins les balises suivantes

•      Une balise <html> qui est la racine (elle englobe toutes les autres balises). La balise html contient deux balises filles: head et body

•      La balise <head> représente l’en-tête du document. Elle peut contenir diverses informations (feuilles de styles, titre, encodage de caractères, . . . ). La seule balise obligatoire dans head est le titre (<title>). C’est le texte qui est affiché dans la barre de fenêtre du navigateur ou dans l’onglet.

•      La balise <body> représente le contenu de la page. On y trouve diverses balises (<div>, <p>, <table>, . . . ) qui formatent le contenu de la page

Titres

•   Les balises <h1>, <h2>, <h3>, <h4>, <h5>, <h6>, permettent de créer des titres de section, sous-section , sous-sous-section ,. . .

•   Six niveaux hiérarchiques sont possibles

 

Paragraphes

Des paragraphes de textes sont introduits avec les balises <p>. Par défaut chaque paragraphe implique un retour à la ligne:

 

Remarque : par défaut, les espaces, retour à la ligne, . . . sont ignorés et le texte est reformaté pour remplir la largeur de la page

Mise en valeur du texte

• Les balises <em> (emphasis, important), <strong> (très important), <mark> (visible, pertinent), et bien d’autres, permettent de mettre en valeur du texte.

 

Liens hyper-text

On peut faire référence à une autre ressource en utilisant un lien hyper-texte (balise <a/> et son attribut href). La cible du lien peut être absolue ou relative. Si l’URL est relative, le chemin est substitué à la dernière composante de l’URL de la page courante. Si l’URL commence par un # elle référence, l’attribut id d’un élément de la page:

 

Liste

On peut créer des listes énumérées (avec <ol>, ordered list) ou non énumérées (avec <ul>, unordered list). Chaque ligne est limitée par une balise <li> (list item)

   

Tableaux

On peut formater des tables en utilisant :

•   La balise <table> pour délimiter la table

•   La balise <tr> pour délimiter une ligne de la table

•   La balise <th> pour délimiter une tête de colonne

•   La balise <td> pour délimiter une case

•   L’attribut colspan permet de fusionner des colones

 

Remarques générales

•   De nombreuses autres balises existent + de nouvelles avec HTML 5

•   On n’a normalement pas le droit de mettre n’importe quel élément n’importe où (i.e. pas de <li> tout seul)

•   Il existe une spécification précise de HTML 5 (plusieurs dizaines de pages uniquement pour les balises)

•   Il existe aussi des validateurs, il faut les utiliser le plus possible

•   De manière générale, les espaces sont ignorés, on prendra donc bien soin de les utiliser judicieusement pour rendre le code de la page lisible

•   Tous les éléments ont un style (moche) par défaut. On peut modifier ce style grâce à des propriétés CSS.

Overview

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

Cascading Style Sheets (CSS)

CSS : Langage permettant de décrire le style graphique d’une page HTML

On peut appliquer un style CSS

•  À un élément en utilisant l’attribut style

•  À une page en utilisant l’élément <style> </style> dans l’en-tête du document (dans la balise <head> </head>).

•  À un ensemble de pages en référençant un fichier de style dans chacune des pages

L’attribut style

<a href="" style="color:red">Un lien</a> Apperçu :

Un lien

Inconvénients :

•  Il faut copier l’attribut style pour tous les liens de la page

•  Modification de tous les éléments difficiles

L’élement style

<html>

<head> <title> </title>

<style>

a { color: red; }

</style>

</head>

<body>

<a href=" ">Lien 1</a> <a href=" ">Lien 2</a>

</body>

</html>

Apperçu :

Lien 1 Lien 2

Inconvénient : local à une page

Fichier .css séparé

Fichier :

a { color: red; }

Fichier :

<html>

<head>

<link href="" type="text/css" rel="stylesheet" /> </head>

</html>

Modifications & déploiement aisés

Syntaxe

Une propriété CSS est définie en utilisant la syntaxe:

nom_prop : val_prop ;

Si on utilise l’attribut style d’un élément:

<a href=" " style="color:red;border-style:solid;border:1pt;">Lien 1</a>

Si on utilise un fichier .css ou une feuille de style:

a { color : red; border-style: solid; border: 1pt;

}

h1 { /* Le style des titres de niveau 1 */ text-decoration: underline; color: green;

}

Voila pour le rappel

Pour creuser plus en détails le HTML et le CSS, quelques pointeurs :

•   Spécification W3C pour HTML :

•   Spécification W3C pour CSS :

•   Le site de tutoriels W3Schools

•   Le cours HTML5 & CSS3 :

•   Wysiwyg en ligne :

Overview

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

Web dynamique ?

•      Le modèle du Web présentée précedemment est statique. Les documents sont stockés sous forme de fichiers physiques, sur le disque dur d’un serveur. • Très tôt on a souhaité générer dynamiquement le contenu d’une page.

•      1993 : invention des scripts CGI qui permettent au serveur de récupérer les paramètres d’une requête HTTP et de générer du HTML en réponse.

•      La programmation Web côté serveur évolue ensuite (apparition de PHP en 1994, puis possibilité ensuite de programmer le côté serveur dans des langages plus robustes, comme Java, . . . )

•      Un problème subsiste : le manque d’interactivité. En effet, on est contraint par le modèle :

formulaire HTML envoi au serveur calcul de la réponse retour au client rechargement de page. Problème d’interactivité (latence réseau, rendu graphique d’une nouvelle page, . . . ).

Web dynamique côté client

•      Avec l’arrivée de Java (1995) la notion d’Applet fait son apparition. Ils sont (pour l’époque) une manière portable d’exécuter du code côté client.

•      Problème : Java est trop lour à l’époque (c’est un vrai langage, il fait peur aux créateurs de site, les performances sont médiocres, . . . ).

•      1995 : Brendan Eich (Netscape) crée Javascript en 10 jours. Il emprunte de la syntaxe à Java/C, et Netscape Navigator 2.0 embarque un interpréteur Javascript en standard

•      Le langage est rapidement adopté, mais chaque navigateur implémente sa propre variante. Le langage lui-même est standardisé en 1996 (ECMAScript, standardisé par l’ECMA).

•      Malheureusement l’API (c’est à dire les fonctions permettant d’accéder au navigateur depuis Javascript) n’est standardisée que tardivement par le W3C

(et tout n’est pas encore supporté par tout le monde à ce jour

Javascript Execution

•      Côté client : le code javascript est exécuté par le navigateur Web. Il doit donc être référencé dans une page HTML :

 

•      Côté serveur : on peut maintenant utiliser Javascript comme un langage généraliste grâce à l’interpréteur

Description du langage

Javascript est un langage :

•   Dynamique (tout est fait à l’exécution)

•   En particulier dynamiquement typé (donc pas typé)

•   Impératif (effets de bords, boucles for, notion d’instruction, . . . )

•   Fonctionnel (les fonctions sont des objets de première classe que l’on va manipuler à haute dose)

•   Objet (mais sans notion de classe, ce qui rend la chose amusante)

•   Interprété, avec une compilation à la volée (JIT). Les navigateurs Web moderne ont des performances incroyables (possibilité de faire des jeux 3D par exemple)

Environnement de développement

•   Pour les premiers cours, on utilisera le navigateur ChromeTM.

•   Il est recommendé d’utiliser le même navigateur pour s’abstraire dans un premier temps des problèmes de compatibilité

•   On peut utiliser un éditeur de texte simple (Eclipse est a proscrire, le support Javascript est notoirement mauvais)

•   On utilisera la console de débuggage Javascript de Chrome (Ctrl-Shift-J)

Number

Il n’y a pas de type entier, uniquement des numbers qui sont flottants IEEE-754 double précision (64 bits : 53 bits pour la mantisse, 11 bits pour l’exposant, 1 bit de signe).

Notation décimale entière :

10, 3444,?25, 42,

Notation scientifique :

1.3, 0.99, 00.34e102,?2313.2313E ? 23,

Notation octale :

0755,?01234567

Notation hexadécimale :

0x12b,?0xb00b5, 0xd34db33f,

Le standard garanti que tous les entiers 32bits sont représentatbles exactement (sans arrondi). On peut écrire des entiers plus grands que 231 ? 1 mais au bout d’un moment on a une perte de précision.

Opérateurs arithmétiques :

          ? :                     Moins unaire

             +,?,?,% :           addition, soustraction, produit, modulo

          / :                     Division (flottante)

Booléens true/false :  vrai/faux

Opérateurs logiques :

! : négation (unaire)

&&, || : « et » logique, « ou » logique

Variables, affectations

•   Un nom de variable commence toujours par une lettre (majuscule ou minuscule), $ ou _ et se poursuit par un de ces caractères ou un chiffre.

•   On utilise le mot clé var

Exemples :

var $foo = 123; var bar = 1323e99; var _toto = bar;

•   Attention on peut définir une variable sans l’avoir déclarée, et ça marche mais ça ne fait pas ce que l’on pense.

Chaîne de caractères (string)

Encodées en UTF-16 (ou UCS-2), délimitées par des « ’ » ou « " » Opérations sur les chaînes :

             foo[10] :                             accès au 11 ème caractère

           pas de mise à jour :             les chaînes sont immuables

           + :                                       concaténation

              s.length :                         longueur

s.concat("23") : concaténation (bis)

Un grand nombre de méthodes sont disponible, on les verra prochainement

(expressions régulières, recherche, remplacement, . . . )

Comparaisons

Opérateurs de comparaisons

Opérateur

Description

$a == $b

Égal, après conversion de type

$a != $b

Différent, après conversion de type

$a === $b

Égal et de même type

$a !== $b

Différent ou de type différent

$a < $b

Strictement plus petit, après conversion de type

$a > $b

Strictement plus grand, après conversion de type

$a <= $b

Plus petit, après conversion de type

$a >= $b

Plus grand, après conversion de type

Objet

La structure de donnée de base est l’objet

{ }

//Un objet vide

{ x : 1, y : 2 }

//Un objet avec deux champs x et y.

o.x

//Accès à un champ

o[’x’]

//Syntaxe alternative

o.z = 3;

En javascript, tout est objet

//rajoute le champ z à l’objet o!

"123".concat("456")

//renvoie la chaîne "123456"

3.14.toString()

//renvoie la chaîne "3.14"

Instructions

Comme en C/C++/Java . . . les expressions sont aussi des

instructions

x = 34;

25; //la valeur est jetée. f(1999);

Javascript essaye d’insérer automatiquement des « ; ». Pour ce cours on ne lui fait pas confiance et on termine toutes les instructions, sauf les blocs par un « ; »

Conditionnelle

if ( c ) {

// cas then

} else {

// cas else

}

Les parenthèses autour de la condition "c" sont obligatoires. La branche else { . . . } est optionnelle. Les accolades sont optionnelles pour les blocs d’une seule instruction.

Boucles

while ( c ) {

//corps de la boucle while

}

do {

//corps de la boucle do } while ( c );

for(init ; test ; incr) {

//corps de la boucle for

} break :          sort de la boucle immédiatement

continue : reprend à l’itération suivante

Fonctions

On peut définir des fonctions globales :

function f(x1, , xn) {

// instructions

};

On utilise le mot clé return pour renvoyer un résultat (ou quitter la fonction sans rien renvoyer)

On peut aussi créer des fonctions « inline » :

var z = 1 + (function (x, y ) { return x * y; })(2,3); // x contient 7

On dispose donc de la syntaxe alternative pour la déclaration de fonction :

var f = function (z) { return x+1; };

Fonctions: suite

En première approximation, « les méthodes » ne sont que des fonctions stockées dans le champs d’un objet :

var obj = { x : 1, y : 1 }; // objet

= function (i, j) { obj.x += i; obj.y += j;

}; (2,3);

On verra que c’est beaucoup plus subtil que ça.

Overview

Généralités sur le web

Rappels sur le langage HTML

Rappels sur le langage CSS

Javascript : survol du langage et syntaxe

Javascript : interaction avec le navigateur

Quelque fonctionalités de base

On ne fait ici qu’un très bref survol des fonctionalités, suffisamment pour faire le TP 1. On reviendra en détails sur tous ces concepts.

Objet Global document

L’objet global document représente le document HTML. Il implémente l’interface DOM et on peut donc le parcourir comme un arbre (propriétés firstChild, parent, nextSibling . . . ).

 

Méthodes document

La méthode document.getElementById("foo") permet de récupérer un objet représentant l’élément HTML de la page ayant l’attribut id valant "foo" (null si cet élément n’existe pas).

La méthode document.getElementsByTagName("div") permet de récupérer sous la forme d’un tableau tout les elements de la famille <div>.

• Le résultat de ces méthodes sont des élements HTML: Element qui sont également des objets. Tous ces objets sont de type Node

(héritage).

Traitement des élements HTML

Les attributs

•  Méthodes getAttribute() et setAttribute() de l’objet Element permettant respectivement de récupérer et d’éditer un attribut.

•  Pour les éléments courants il suffit d’une Element.attribut

Le contenu

•  La méthode innerHTML permet de récupérer le code HTML d’un noeud fils d’un élément sous forme de texte.

•  Les méthodes innerText/ textContent récupère uniquement le texte

Résumé

•  DOM et Javascript permettent d’accéder au éléments HTML présents dans un document, de les modifier, d’interagir avec. • Les élement HTML sont structuré comme un arbre généalogique

•  Différentes méthodes pour accéder/modifier les éléments :

getElementById("foo"), getAttribute(), innerHTML,



8