Cours Introduction v01
Cours Introduction v01
Cours Introduction v01
– ESTIA –
Guillaume Rivière
Dernière révision : mars 2019 1
Contexte
Technologies des GAFAM
• Permet de déployer des applications et des
services à l’échelle mondiale
Application riches
Progressive webapps
Single-Page Application (SPA)
2
Références
Youtube
Dooble
GMail
Amazon
Facebook
MS O365
Twitter
Pinterest
Onshape.com
Odoo (OpenERP)
3
Transactions pages web classiques
4
Transactions application web : SPA
5
Histoire
HTML
HTML + CSS
XHTML4
HTML5 + CSS3
Ajax
Jquery
Bootstrap
AngularJS / Angular / React / Backbone.js
6
Application full-web
« Stack »
• Front-end
• API / webservice
• Back-end
• Base de données
Développeur front-end
Développeur
||
full-stack
Développeur back-end
www.alticreation.com, 2013 7
Webservice d’API : applis web / mobile
9
Cloud computing
SaaS
10
Front-end
• Angular (TypeScript)
• React
• Vue
11
Back-end
Back-end
• PHP
• Symfony
• Laravel
• Javascript / Typescript
• NodeJS
• Python
• Djando
• Ruby
• Rails
• R
• C++
• Crow
• Silicon
• Cppcms
• Tntnet
• ctml
Office québécois de la langue française :
Application dorsale
12
Base de données
Base de données
• Relationnelle
• MySQL
• PostgreSQL
• Not Only SQL (NOSQL)
• PostgreSQL
• MongoDB
13
Full-Stack
API / Webservice
• REST
• Format
• JSON
• XML
• XML-RPC
• GraphQL
14
Choix pour ce module
VueJS
• Simple et facile à apprendre
• Permet des projets d’ampleur
• Reprend des aspects de React et Angular
Symfony
• Très répandu
• PHP = 80% des applications serveurs en 201X
15
Plan
VueJS 2
Symfony 4
VueJS + Symfony
Projet
16
Prérequis
HTML5
CSS3
MySQL
PHP5
Programmation Orientée Objet
Commandes shell Linux
Modèle client-serveur
18
Javascript
20
Historique
Créé en 1995
Longtemps relégué à un usage secondaire
• Ex : script pour vérifier le remplissage d’un champ
Devenu majeur pour l’interactivité du web
• Popularisé par réseaux sociaux (Facebook, Twitter …)
• Eviter le rechargement des pages
Développement devenu plus simple et plus
rapide grâce aux frameworks
• jQuery (2006), AngularJS (2010), Bootstrap (2011) …
21
Quelques frameworks
Front-end (navigateur web)
• 2006 : jQuery (John Resig)
• 2010 : Backbone.js (Jeremy Ashkenas)
• 2010 : AngularJS (Google)
• 2011 : Bootstrap (Otto et Thornton, Twitter)
• 2016 : Angular 2+ (Google)
• TypeScript => Javascript
• 2013 : React.js (Facebook)
• 2014 : Vue.js (Evan You, ancien de Google)
Back-end (serveur)
• Node.js : environnement d’exécution ! (≠ framework)
22
Attention !
Les frameworks facilitent le développement
• Fonctionnalités déjà conçues et testées
• Simplification des développements
• Accélération des développements
Les frameworks nécessitent cependant de
maîtriser le langage sur lequel ils s’appuient !
23
Plan
Notions de bases de Javascript
Javascript dans les pages web
Notions avancées
• polyfills, wrappers, asynchrone, closures
Echanges de données avec Ajax
Javascript et HTML5
24
Norme
Important pour assurer la compatibilité et
l’exécution sur les différents navigateurs web
ECMAScript (ECMA-262) Standardisé par Ecma International
• 1997 : ES1 (European association for standardizing
information and communication
• 1998 : ES2 systems, créée en 1961, Genève, Suisse)
• 1999 : ES3 : try / catch
• 2009 : ES5 : support du format JSON
• 2015 : ES6 (ES2015) : arrow functions, promises …
• 2016 : ES7 (ES2016)
• 2017 : ES8 (ES2017) : async / await
• 2018 : ES9 (ES2018)
25
Versions de Javascript
Ne pas confondre la norme avec les versions réellement (ou
partiellement) implantées par les navigateurs web
• 1996 : JS 1.0 JS 1.8.5 (ES5) Navigateur ES6 Navigateur
• 1996 : JS 1.1 Sep. 2012 Chrome 23 Août 2016 Edge 14
• 1997 : JS 1.2
Sep. 2012 IE 10 / Edge Sep. 2016 Safari 10
• 1998 : JS 1.3 (ES1, ES2)
Juil. 2012 Safari 6 Avr. 2017 Chrome 58
• 1999 : JS 1.4
• 2000 : JS 1.5 (ES3) Avr. 2013 Firefox 21 Juin 2017 Firefox 54
28
Scripts JS dans les pages web
Vanilla JS
29
Notions avancées
Fonctions anonymes
polyfills, wrappers, asynchrone, closures
30
Echanges de données avec Ajax
XMLHttpRequest
A l’origine des SPA
websockets
31
Javascript et HTML5
Cf. cours de 1A
32
VueJS 2
33
Historique
https://github.com/vuejs/vue/releases
34
Plan
Props
Slots
Directives
Scoped styles
Animations, transitions
Vue CLI
VueX
35
Avantages
Mélanger HTML et Javascript
36
Directives
Reactive Directives
• v-text
• v-html
• v-show
• v-class
• v-attr
• v-style
• v-on
• v-model
• v-if
• v-repeat
Literal Directives
• v-transition
• v-ref
• v-el
Empty Directives
• v-pre
• v-cloak
https://012.vuejs.org/guide/directives.html
https://012.vuejs.org/api/directives.html
https://012.vuejs.org/api/directives.html#Literal_Directives 37
Cycle de vie
new Vue()
• beforeCreate
• created
• beforeMount
• mounted
• beforeUpdate
• updated
• beforeDestroy
• destroyed
https://fr.vuejs.org/v2/guide/instance.html
38
PHP 7
Utiliser un framework requière des bases
• Compléter celles déjà acquises en « Informatisation du SI »
• Compléter avec des apports de PHP 7
Déjà acquis
• Bases du langage
• Traitement de formulaires
• Traitement de fichiers
• Interrogation BDD
Nouvelles notions
• Nouveaux opérateurs
• Apparition du typage
• Exceptions
• Orienté objet
• Espace de noms
39
Rappels
Variables : commence par un « $ »
Extension des fichiers : .php
Code PHP entre <?php et ?>
Type de données
Opérateurs
40
Rappels
Syntaxe proche du C
• if () {} [ else if () {} ] [ else {} ]
• for ( ; ; ) {}
• while () {}
function multiplier ($x, $y) {
return $x * $y ;
}
41
La boucle foreach()
Très utile pour parcourir les tableaux
associatifs
42
Historique
PHP5
PHP7
43
Symfony 4
https://symfony.com
44
Cadriciel (Framework)
Objectifs
• Ne pas réinventer la roue à chaque projet
• Partager les bonne pratiques (structurant)
• Offrir un « cadre de travail »
Fournir des composants aux développeurs
• Accélérer la création des fondations, de
l’architecture et des grandes lignes d’un logiciel
• Pas destiné aux utilisateurs finaux (cf. Wordpress)
• Pas destiné aux novices
45
Intérêts
• Se recentrer sur le fond, plutôt que sur la forme
Avantages
• Accroître la productivité des développeurs
• Aspects structurant : organisation du code
• Favorise évolutivité et maintenabilité
• Briques déjà testées, éprouvées et optimisées
• Recruter collaborateurs partageant les pratiques
• Communauté de développeurs
• Documentation, aide, résolution de bugs, mises à jour
46
Inconvénients
• Courbe d’apprentissage plus élevée
• Temps d’apprentissage non négligeable
• Connaître chaque brique du framework prend du
temps
• Apprendre un framework est un investissement
personnel
• Se tenir au courant des nouveautés
• Changements lors des nouvelles versions
• Suivit de l’évolution des langages
47
Quelques frameworks PHP
Symfony
Laravel (construit à 30% sur Symfony)
CodeIgniter
Zend Framework
CakePHP
Yii
Phalcon
FuelPHP
48
Historique
Agence SensioLabs
• Sensio Framework
• Créateur : Fabien Potencier
Symfony 1 : octobre 2005
Symfony 2 : août 2011
Symfony 3 : novembre 2015
Symfony 4 : novembre 2017 (PHP > 7.1)
• 4.1 : mai 2018
• 4.2 : novembre 2018 (PHP ≥ 7.3)
• 4.2.4 => TP (latest stable)
• 4.3 : mai 2019
49
Versions
https://symfony.com/roadmap
50
Plan
Twig
Doctrine ORM
API Platform
Architecture MVC
Open Source
• Licence MIT
51
Créer un projet
En utilisant le gestionnaire de dépendances
• composer create-project symfony/skeleton mon-projet
Architecture des fichiers
• bin/ : programmes utiles pendant le développement
• config/ :
• public/ : fichiers destinés aux visiteurs
• images, fichiers CSS, codes Javascript
• index.php : le contrôleur frontal (point d’entrée de l’application : prévient le noyau de
l’arrivée d’une requête)
• src/ : code source du projet
• Organisation du code en « bundles »
• Kernel.php : gestion des requêtes, lancement des codes à exécuter
• templates/ : les fichiers twig pour le moteur de templating
• var/ : utilisé pendant l’activité du projet
• fichiers de logs, fichiers de cache ...
• vendor/ : contient les bibliothèques externes au projet
• Y compris celles de Symfony, mais aussi Doctrine, Twig …
52
Documentation
Synfony API
• https://api.symfony.com/4.2/index.html
53
Références bibliographiques
54
VueJS + Symfony
55
Deux possibilités
56
Docker
57
Ce que nous n’avons pas vu
Authentification des utilisateurs
Internationalisation de l’application
Environnement de tests unitaires (PHPUnit)
58
Bibliographie
The Majesty of Vue.js (Packt Publishing, 2016,
230 pages) scholarvox.com/book/88843467
Développez votre site web avec le framework
Symfony3 (Eyrolles, 2016, 537 pages)
scholarvox.com/book/88836319
PHP 7 : Cours et exercices (Eyrolles, 2017, 609
pages) scholarvox.com/book/88838646
Découvrez le langage JavaScript (Eyrolles,
2017, 504 pages) scholarvox.com/book/88838415
59