Introduction à Vue.js et ses outils
Introduction à Vue.js et ses outils
js : introduction
Achref El Mouelhi
[Link]@[Link]
1 Introduction
2 IDE : Integrated Development Environment
3 Vue Devtools
4 Solution avec CDN
5 Solution avec Vite
Installation
Création et structure d’un projet créé avec Vite
6 Solution avec CLI
Installation
Création et structure d’un projet CLI
7 Commandes utiles
[Link]
Framework
Plusieurs traductions
cadriciel
H I ©
environnement de développement
UEL
cadre d’applications
L MO
...
h re fE
c
© Acomposants logiciels
Ensemble de
Facilitant la réalisation d’une (partie de l’) application
Imposant une certaine structure, logique, syntaxe...
[Link]
Plusieurs types de Framework
H I ©
UEL
Symfony pour PHP
MO
...
fE L
Frameworks de présentation de contenu web :
c
Bootstrap pour CSS h re
... © A
Frameworks de persistance
Frameworks de logging
...
[Link]
Framework : avantages
Gain de temps
H I ©
UEL
Meilleure organisation de projet
Respect de bonnes pratiques
L MO
Meilleure efficacité
h refE
A c
©
Faciliter le travail d’équipe
...
[Link]
Framework : inconvénients
H I ©
Complexité
UEL
Apprentissage L MO
h refE
...
A c
©
[Link]
[Link]
Appelé aussi Vue (et prononcé View)
Framework JavaScript (ou TypeScript)
H I ©
Écrit en TypeScript UEL
L MO
Open-source
h refE
c
Créé par Evan You (ex salarié de Google) en 2014
A
©
Permettant de créer des applications web et mobiles (Vue Native)
Front-End
Single page
H I ©
contenant la disposition et l’apparence de ce qu’un utilisateur voit à
l’écran,
UEL
L MO
recevant l’interaction avec l’utilisateur : clic, saisie, survol...
ViewModel A
ch
©
remplaçant du contrôleur dans l’architecture MVC,
connecté à la vue par le data binding,
représenté dans [Link] par la balise <script>.
[Link]
[Link] utilise : H I ©
UEL
les composants web
L MO
le DOM Virtuel
h refE
A c
©
[Link]
DOM Virtuel ?
H I ©
permettant des mises à jour plus rapides et efficaces en ne modifiant que les parties
UEL
nécessaires de l’interface utilisateur avant de synchroniser ces changements avec le DOM
physique.
L MO
h re fE
A c
©
[Link]
DOM Virtuel ?
H I ©
permettant des mises à jour plus rapides et efficaces en ne modifiant que les parties
UEL
nécessaires de l’interface utilisateur avant de synchroniser ces changements avec le DOM
physique.
L MO
h re fE
A c
Remarque
©
Les modifications apportées au DOM physique entraînent généralement des opérations
coûteuses en termes de temps de traitement.
[Link]
npm (node package manager) : le gestionnaire de paquets par défaut pour une
application JavaScript.
H I ©
UEL
vue-cli command line interface : outil facilitant la création et la construction
d’une application [Link] en exécutant directement des commandes.
L MO
fE
webpack : bundler JavaScript
c h re
construit le graphe de dépendances.
©
regroupe
Ades ressources de même nature (.js ou .css...) dans un ou
plusieurs bundles.
fonctionne avec un système de module : un fichier JS est un module, un
fichier CSS est un module...
[Link]
[Link]
H I ©
UEL
GitLab
Alibaba
L MO
Adobe
h refE
A c
...
©
[Link]
[Link]
Eclipse
H I ©
UEL
...
L MO
h re fE
A c
©
[Link]
Eclipse
H I ©
UEL
...
L MO
h re fE
A c
Visual Studio Code (ou VSC), pourquoi ?
Gratuit. ©
Extensible selon le langage de programmation.
[Link]
H I ©
UEL
VSC : téléchargement
[Link]/download
L MO
h re fE
A c
©
[Link]
[Link]
[Link]
H I ©
UEL
Pour indenter son code : Alt Shift f
A h
cl’occurrence
©
Pour sélectionner suivante : Ctrl d
[Link]
H I ©
UEL
Vue Devtools
MO
Extension multi-navigateur pour le débogage des applications [Link].
fE L
Installation : [Link]
c h re
© A
[Link]
fE L
Cliquez sur vue-cdn puis sur le bouton Sélectionner un dossier
h re
Dans vue-cdn, créez deux fichiers [Link] et [Link]
c
© A
Dans [Link], saisissez html:5 ou ! puis cliquez sur Entree
[Link]
Code généré
<!DOCTYPE html>
<html lang="fr">
H I ©
UEL
<head>
<meta charset="UTF-8">
MO
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
</head>
fE L
<body>
c h re
</body>
</html> © A
[Link]
<!DOCTYPE html>
<html lang="fr">
H I ©
UEL
<head>
<meta charset="UTF-8">
MO
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cours [Link]</title>
</head>
fE L
<body>
<script src="[Link]">
c h re
</script>
</body>
© A
</html>
[Link]
<!DOCTYPE html>
©
<html lang="fr">
H I
UEL
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
MO
<title>Cours [Link]</title>
L
</head>
<body>
h re fE
<script src="[Link]
<script src="[Link]">
</script>
A c
</body>
</html>
©
[Link]
H
[Link] ©
UEL
L MO
h re fE
A c
©
[Link]
H
[Link] ©
UEL
L MO
Ou (jsdelivr)
h re fE
A c
[Link]
©
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cours [Link]</title>
H I ©
UEL
</head>
MO
<body>
<div id='app'>
{{ message }}
</div>
fE L
c h re
<script src="[Link]
<script src="[Link]">
</script>
</body> © A
</html>
h re fE
c
Vue : une classe [Link] prédéfinie chargée depuis la CDN
A
©
createApp() : méthode permettant de créer une application [Link]
data() : fonction permettant de retourner des données affichées souvent dans la zone
d’application
message : une variable contenant la valeur Hello world
[Link](’#app’) : méthode permettant de charger l’application [Link] dans
l’élément HTML ayant l’identifiant app
[Link]
H I ©
UEL
Installez l’extension Live Server
MO
Faites un clic doit sur [Link]
L
Cliquez sur Open with
r e f E
Live Server
c h
© A de Hello world
Vérifiez l’affichage
[Link]
H I ©
import { createApp } from '[Link]
createApp({
UEL
MO
data() {
return {
};
message: "Hello world"
fE L
}
}).mount('#app')
c h re
© A
[Link]
<!DOCTYPE html>
<html lang="fr">
<head>
<meta charset="UTF-8">
H I ©
UEL
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Cours [Link]</title>
MO
</head>
<body>
<div id='app'>
fE L
{{ message }}
</div>
c h re
© A
<script src="[Link]" type="module">
</script>
</body>
</html>
[Link]
c h r e
©A
[Link]
Vite
c h re
applications [Link]
Open-source A
©
Prenant en charge les langages JavaScript et TypeScript
[Link]
Relation avec esbuild Rollup
H I ©
UEL
esbuild pour le développement (serveur rapide, transpilation JS/TS).
Rollup pour le build de production.
L MO
h re fE
Vite agit comme une surcouche de haut niveau qui cache la complexité de Rollup.
c
Rollup gère la génération des bundles finaux, avec un système de plugins très modulable.
A
©
Résumé
[Link]
Fonctionnalité de Vite
H I ©
U EL apportées à leur
MO la page du navigateur
Permettant de voir instantanément les modifications
f L
code sans avoir à rafraîchir manuellement
Eassurer une navigation bidirectionnelle
r e
cdehdéveloppement (fourni par des outils comme Vite,
Utilisant les WebSocket pour
A
entre le serveur
© et le navigateur
Webpack...)
[Link]
A ch
SolidJS : avec SolidStart qui repose entièrement sur Vite.
... ©
[Link]
[Link]
Pourquoi ce choix ?
H I ©
UEL
La communauté JavaScript s’oriente vers des outils plus simples et
performants.
L MO
h re fE
A c
©
[Link]
Pourquoi ce choix ?
H I ©
UEL
La communauté JavaScript s’oriente vers des outils plus simples et
performants.
L MO
h re fE
A c
Par conséquence
©
Vite s’impose comme un standard moderne, même dans les frameworks
historiquement liés à Webpack.
[Link]
Remarque
Pour installer [Link], il faut télécharger et installer [Link] (Dernière version stable LTS)
H I ©
UEL
L MO
h re fE
A c
©
[Link]
Remarque
Pour installer [Link], il faut télécharger et installer [Link] (Dernière version stable LTS)
H I ©
Pour [Link], il faut
UEL
L MO
fE
aller sur [Link]
c h re
choisir une version récente, télécharger et installer
© A
[Link]
Remarque
Pour installer [Link], il faut télécharger et installer [Link] (Dernière version stable LTS)
H I ©
Pour [Link], il faut
UEL
L MO
fE
aller sur [Link]
c h re
choisir une version récente, télécharger et installer
© A
Pour vérifier l’installation depuis une console (invite de commandes), exécutez
node -v
[Link]
Remarque
H I ©
U EL différentes.
O
Pour créer un projet avec Vite, il existe trois commandes
M
f E L
Nous utiliserons la dernière commande qui génère moins de composants
chr e
© A
[Link]
[Link]
[Link]
MO
√ Add Pinia for state management? ... No / Yes
√ Add Vitest for Unit Testing? ... No / Yes
fE L
√ Add an End-to-End Testing Solution? ... No / Yes / Cypress / Playwright
√ Add ESLint for code quality? ... No / Yes
c h re
Add Prettier for code formatting? ... No / Yes
cd vue-vite
npm install
npm run dev
H I ©
UEL
L MO
h re fE
A c
©
Ensuite
H I ©
UEL
L MO
h re fE
A c
©
Ensuite
H I ©
UEL
L MO
h re fE
A c
Et enfin
©
[Link]
L MO
h re fE
A c
©
[Link]
L MO
h re fE
A c
Pour lancer l’application, exécutez
npm run dev
©
[Link]
fE L
public : contenant les fichiers statiques à intégrer systématiquement dans dist
h re
[Link] : fichier de configuration de Vite pour un projet [Link])
c
© A
[Link] : point d’entrée de l’application
[Link] : permet de fournir une vue d’ensemble de l’application, décrire son objectif et
expliquer les fonctionnalités principales.
[Link]
H I ©
[Link] : fichier de configuration principal pour TypeScript pouvant contenir les
UEL
paramètres de compilation, les chemins d’inclusion et d’exclusion, les options de module...
MO
[Link] : fichier spécifique à l’application Vue pouvant contenir des
L
fE
propriétés comme chemins d’importation, les options de type...
h re
[Link] : fichier de configuration permettant d’activer des fonctionnalités
c
ECMAScript...© A
TypeScript spécifiques à [Link], comme les modules CommonJS, les cibles
[Link]
assets : contenant les fichiers statiques à intégrer dans dist s’ils sont explicitement
référencés dans le projet
H I ©
UEL
components : contient trois composants prédéfinis
MO
[Link]
[Link]
fE L
h re
[Link] : composant référencé par [Link]
c
© A
[Link] (ou [Link]) : fichier référencé par [Link] et permettant de charger
l’application [Link] dans l’élément ayant l’identifiant app
[Link]
Contenu d’[Link]
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
H I ©
UEL
<link rel="icon" href="/[Link]" />
MO
<meta name="viewport" content="width=device-width, initial-scale
=1.0" />
<title>Vite App</title>
fE L
</head>
<body>
c h re
©
<div id="app"></div> A
<script type="module" src="/src/[Link]"></script>
</body>
</html>
[Link]
Contenu de src/[Link]
import { createApp } from 'vue'
H I ©
import './[Link]'
UEL
import App from './[Link]'
L MO
h re fE
c
©A
createApp(App).mount('#app')
[Link]
H I ©
UEL
[Link] devient le vrai point de départ du bundle.
[Link]
Résumé
H I ©
U EL
<link rel="stylesheet" ...> [Link] Non
M O
f E L
c h r
import ’./[Link]’e [Link] Oui
©A
[Link]
H I ©
UEL
L MO
h re fE
A c
©
[Link]
H I ©
UEL
MO
Pour vérifier la version d’Vue/CLI installée, exécuter la commande
L
vue -version
h re fE
A c
©
[Link]
H I ©
UEL
MO
Pour vérifier la version d’Vue/CLI installée, exécuter la commande
L
vue -version
h re fE
A c
©
Ou
vue -V
[Link]
MO
Manually select features
$ cd vue-cli
$ npm run serve
cd vue-cli
H I ©
UEL
L MO
h re fE
A c
©
cd vue-cli
H I ©
UEL
code .
L MO
h re fE
A c
©
cd vue-cli
H I ©
UEL
code .
L MO
h
Pour lancer l’application, exécutez re fE
A c
npm run serve
©
cd vue-cli
H I ©
UEL
code .
L MO
h
Pour lancer l’application, exécutez re fE
A c
npm run serve
©
Ou
vue serve
[Link]
MO
public : contenant le point d’entrée de l’application [Link]
L
h re fE
[Link] : fichier chargeant les services de Vue-CLI
A c
©
[Link] : fichier de configuration principal pour TypeScript (Si vous avez choisi
TypeScript comme langage)
[Link] : permet de fournir une vue d’ensemble de l’application, décrire son objectif et
expliquer les fonctionnalités principales.
[Link]
H I ©
UEL
assets : unique dossier accessible aux visiteurs et contenant logo, CSS, images, sons...
MO
components : contient un composant [Link]
fE L
[Link] (ou [Link]) : point d’entrée de Webpack permettant de charger l’application
c h re
[Link] dans l’élément ayant l’identifiant app
A
[Link] : fichier référencé par [Link] et utilisant le composant [Link]
©
[Link]
Question
Où faut-il placer les fichiers statiques d’une application [Link], dans public ou dans assets ?
H I ©
UEL
L MO
h re fE
A c
©
[Link]
Question
Où faut-il placer les fichiers statiques d’une application [Link], dans public ou dans assets ?
H I ©
UEL
L MO
Explication
h re fE
c
src/assets pour les fichiers à intégrer dans le graphe de dépendances : images, feuilles
A
©
de style... Ils sont traités (compression, renommage, hash) par le bundler.
public pour les fichiers accessibles directement tels quels, sans traitement par le bundler
(favicon, [Link], images fixes...).
[Link]
Réponse
Placez dans assets tout fichier que vous souhaitiez qu’il bénéficie des fonctionnalités
H I ©
d’optimisation de Webpack (compression, hashage...) lors de la construction (build).
UEL
Utilisez public pour les fichiers statiques accessibles tels quels après le build.
L MO
h re fE
A c
©
[Link]
Réponse
Placez dans assets tout fichier que vous souhaitiez qu’il bénéficie des fonctionnalités
H I ©
d’optimisation de Webpack (compression, hashage...) lors de la construction (build).
UEL
Utilisez public pour les fichiers statiques accessibles tels quels après le build.
L MO
h re fE
Remarques
A c
©
Un fichier [Link] placé dans assets peut être référencé ./assets/[Link].
Un fichier [Link] placé dans public peut être référencé directement /[Link].
[Link]
Contenu d’[Link]
<!DOCTYPE html>
<html lang="">
<head>
<meta charset="utf-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
H I ©
UEL
<meta name="viewport" content="width=device-width,initial-scale=1.0">
<link rel="icon" href="<%= BASE_URL %>[Link]">
MO
<title><%= [Link] %></title>
</head>
<body>
<noscript>
fE L
c h re
<strong>We're sorry but <%= [Link] %> doesn't work
properly without JavaScript enabled. Please enable it to continue.</strong>
</noscript>
©
<div id="app"></div> A
<!-- built files will be auto injected -->
</body>
</html>
[Link]
Contenu de src/[Link]
H I ©
import { createApp } from 'vue'
import App from './[Link]' OU
EL
L M
r e f E
h
createApp(App).mount('#app')
c
©A
[Link]
H ©
Démarrage ultra rapide
I
UEL
Basé sur WebPack (config plus complexe mais Utilisant ESBuild (dev) et Rollup
flexible) (build)
L
Code généré compatible avec tous les MO
navigateurs anciens/modernes
fE Code ciblant uniquement les
chre
navigateurs modernes
©A
Recommandé pour les grands projets
Initialement pensé pour petits
projets, mais désormais utilisé à
grande échelle
[Link]
Remarque
H I ©
UEL
L MO
h re fE
A c
©
[Link]
Remarque
H I ©
UEL
Documentation officielle : [Link]
L MO
h re fE
A c
©
[Link]
Remarque
H I ©
UEL
Documentation officielle : [Link]
L MO
h re fE
A c
©
Pour migrer de vue-cli vers Vite
[Link]
how-to-migrate-from-vue-cli-to-vite/
[Link]
H I ©
UEL
L MO
h re fE
A c
©
[Link]
H I ©
UEL
MO
Pour vider le cache (Avant la version 5 de npm)
L
npm cache clean
h re fE
A c
©
[Link]
H I ©
UEL
MO
Pour vider le cache (Avant la version 5 de npm)
L
npm cache clean
h re fE
A c
©
Pour vider le cache (depuis la version 5 de npm)
npm cache verify
[Link]
H I ©
Pour mettre à jour la version de [Link]
UEL
npm update -g @vue/cli
L MO
h re fE
A c
©