Vue.js & Vuetify

Créer des applications web modernes

Introduction Environnement Premier projet

Défiler pour commencer

01 / Introduction

Qu'est-ce que Vue.js ?

Framework JavaScript créé par Evan You en 2014. Après avoir travaillé chez Google sur AngularJS, il a voulu créer un outil plus simple et accessible.

Vue.js est un framework progressif : utilisable comme une simple librairie ou comme un framework complet pour des applications complexes.

Évolution de Vue.js

1.0

2015 — Evangelion

Première version stable

2.0

2016 — Ghost in the Shell

Virtual DOM, rendu serveur

3.0

2020 — One Piece

Composition API, performances

3.5

2024

Améliorations TypeScript

💡 Les noms de code sont des références à des animes japonais !

Documentation Vue.js →
02 / Avantages

Pourquoi choisir Vue.js ?

Performant

Léger (~10 Ko) et optimisé pour être rapide grâce au Virtual DOM

Accessible

Basé sur HTML, CSS et JavaScript — vous savez déjà presque tout !

Progressif

Adoptez-le progressivement, d'une simple page à une application complète

💡 Pour ce cours

Nous avons choisi Vue.js car sa syntaxe ressemble au HTML/CSS/JS que vous connaissez déjà. Les concepts appris sont ensuite transférables à React ou Angular.

03 / Concept clé

Le Virtual DOM

Le DOM (Document Object Model) est la représentation de votre page HTML en mémoire. Modifier le DOM directement est lent car le navigateur doit recalculer les styles et réafficher la page.

Vue.js utilise un Virtual DOM : une copie légère du DOM en JavaScript. Seules les différences sont appliquées au vrai DOM.

Données

(state)

Virtual DOM

(diff)

DOM réel

(minimal)

1 Vue met à jour le Virtual DOM (très rapide)
2 Vue compare l'ancien et le nouveau Virtual DOM
3 Seules les différences sont appliquées
04 / UI Framework

Vuetify

Bibliothèque de composants basée sur Material Design de Google. Créez rapidement des interfaces élégantes et professionnelles.

📖 Bien documenté

Exemples pour chaque composant

🎨 Cohérent

Material Design garantit l'harmonie

📱 Responsive

Adapté mobile par défaut

♿ Accessible

Respect des normes ARIA

Exemple : v-btn

<v-btn color="primary"
       prepend-icon="mdi-check">
  Valider
</v-btn>
05 / Concepts

C'est quoi un composant ?

Un composant est un bloc réutilisable de votre interface. Par exemple : un bouton, une carte, un menu, un formulaire...

L'idée centrale de Vue.js est de diviser l'interface en petits blocs réutilisables.

Plutôt qu'un seul fichier HTML géant, on découpe la page en composants indépendants.

Découpage d'une page

Header — Logo et navigation
Sidebar

Menu latéral

Content

Zone principale avec Cards

Footer — Pied de page

Chaque bloc = un fichier .vue

♻️ Réutilisation

Une Card utilisée 10 fois = 1 seul fichier

🔧 Maintenance

Modifier le header ? Un seul fichier

📋 Clarté

Chaque composant a une responsabilité

06 / Architecture

Single File Components .vue

MonComposant.vue
<script setup>
import { ref } from 'vue'

const message = ref('Bonjour !')
</script>

<template>
  <h1>{{ message }}</h1>
</template>

<style scoped>
h1 {
  color: deeppink;
}
</style>
<script setup>

Logique JavaScript : données, fonctions, imports

<template>

Structure HTML du composant

<style scoped>

Styles CSS isolés au composant

✨ Avantages

Organisation • Isolation • Réutilisation • Maintenance facilitée

Vue SFC Playground — Tester en ligne →
07 / Réactivité

ref et reactive

ref() Valeurs simples

const compteur = ref(0)

// Modifier
compteur.value++

// Dans le template
{{ compteur }}

⚠️ Utiliser .value dans le script

reactive() Objets

const user = reactive({
  nom: 'Alice',
  age: 25
})

// Modifier
user.age++

✅ Pas besoin de .value

💡 Astuce

En cas de doute, utilisez ref() — ça marche pour tout !

08 / Setup

Environnement de développement

1 🦁

Navigateur

Brave ou Firefox pour les DevTools

brave.com →
2 📦

Node.js + npm

Runtime JavaScript et packages

nodejs.org (LTS) →
3 🔀

Git

Versionnement du code

git-scm.com →
4 🐙

GitHub

Collaboration + Student Pack

github.com →
5 💻

WebStorm

IDE JetBrains (gratuit étudiants)

jetbrains.com →
6 🔧

Vue DevTools

Extension navigateur indispensable

devtools.vuejs.org →
09 / Outil essentiel

Vue DevTools

Extension navigateur indispensable pour déboguer vos applications Vue.js. Elle permet d'inspecter les composants, leurs données et l'état de l'application.

🔍 Inspecter les composants

Voir la hiérarchie complète de vos composants Vue

📊 Visualiser les données

Voir et modifier les ref() et reactive() en temps réel

🏪 Explorer Pinia

Inspecter le state management de l'application

⚡ Analyser les performances

Identifier les goulots d'étranglement

Installation

💡 Comment l'utiliser ?

  1. Ouvrez les DevTools du navigateur (F12)
  2. Cherchez l'onglet Vue
  3. Sélectionnez un composant pour voir ses données
Documentation Vue DevTools →
10 / IDE

WebStorm — Configuration

Raccourcis essentiels

Commit Ctrl + K
Push Ctrl + Shift + K
Pull Ctrl + T
Terminal Alt + F12
Action rapide Alt + Entrée

Configuration ESLint

  1. 1 File → Settings → JavaScript → ESLint
  2. 2 Automatic ESLint configuration
  3. 3 Cocher Run eslint --fix on save

✨ Le code se corrige automatiquement à la sauvegarde !

Guide WebStorm complet →
11 / Démarrage

Créer une application Vuetify

1

Créer le projet

npm create vuetify
2

Accéder au dossier

cd hello-world
3

Lancer le serveur

npm run dev

🌐 http://localhost:3000

Vuetify - Getting Started →

Options de création

Project name

hello-world

Which preset?

Recommended ✓

Use TypeScript?

No

Package manager?

npm ✓

Install dependencies?

Yes ✓

12 / Architecture

Structure d'un projet Vuetify

📁 Arborescence

mon-projet/
├── public/ ← Fichiers statiques (favicon, images)
├── src/ ← Code source Vue.js
├── App.vue ← Composant racine
├── main.js ← Point d'entrée JS
├── components/
├── views/
└── plugins/
├── index.html ← Page HTML principale
├── package.json
└── vite.config.js

Flux de démarrage

1

index.html

Point d'entrée HTML (lang="fr")

2

main.js

Initialise Vue, Vuetify, plugins

3

App.vue

Composant racine de l'application

🔥 Hot Reload

Modifiez un fichier, sauvegardez (Ctrl+S), et la page se met à jour automatiquement !

12b / Build Tool

Vite — Le moteur de votre app

Vite (prononcé "vite" en français !) est l'outil qui compile et sert votre application Vue.js pendant le développement.

Démarrage instantané

Pas besoin d'attendre — le serveur démarre en millisecondes

🔥

Hot Module Replacement (HMR)

Modifiez votre code → la page se met à jour sans recharger

📦

Build optimisé

Génère des fichiers minifiés et optimisés pour la production

Vite vs Webpack

Webpack ~30 secondes au démarrage
Vite ~300 millisecondes ⚡

Vite utilise les ES modules natifs du navigateur — pas besoin de tout recompiler à chaque changement.

💡 Créé par Evan You

Le créateur de Vue.js a aussi créé Vite pour remplacer les outils lents comme Webpack.

vitejs.dev →
13 / CLI

Commandes npm essentielles

npm run dev

Serveur de développement

npm run build

Compiler pour la production

npm run preview

Prévisualiser le build

npm run lint

Vérifier la qualité du code

npm install <package>

Ajouter une dépendance

npm update

Mettre à jour les packages

⚠️ Arrêter le serveur

Utilisez Ctrl + C dans le terminal

Documentation npm CLI →
14 / Publication

Déployer sur GitHub Pages

1

Configurer vite.config.js

export default defineConfig({
  base: '/nom-du-repo/',
  // ... autres options
})
2

Créer le workflow

Créer .github/workflows/deploy.yml

3

Activer GitHub Pages

Settings → Pages → Source: GitHub Actions

🚀 Déploiement automatique à chaque push !

⚠️ Ne jamais coder sur main !

Chaque push sur main = mise en production immédiate

Avantages de GitHub Pages

💰

Gratuit

Pour les dépôts publics

Automatique

Déploie à chaque commit

🔒

HTTPS inclus

Certificat SSL gratuit

🌍

CDN mondial

Chargement rapide partout

Guide complet sur devjs.ch →
15 / Production

Déployer en production

Philosophie : 2 environnements

🧪

Staging (GitHub Pages)

Chaque push sur main → Tests

🚀

Production (Infomaniak)

Chaque release → Site public

💡 Avantage

Tester sur staging avant de publier en production. Pas de surprise !

Déployer en production

1. Créer un tag de version

git tag v1.0.0

2. Pousser le tag

git push origin v1.0.0

Semantic Versioning

v1.2.3

MAJEUR : breaking changes

MINEUR : nouvelles fonctionnalités

PATCH : corrections de bugs

Guide complet FTP sur devjs.ch →
16b / Pratique

Démo : Mini Pokédex

Mettons en pratique les concepts du tutoriel Vue.js (étapes 1-7) en créant un mini Pokédex ensemble !

Concepts couverts

{{ }} Interpolation
:attr Liaisons
@click Événements
v-model Formulaires
v-if Conditionnel
v-for Listes
computed() Propriétés calculées
App.vue
<script setup>
import { ref, computed } from 'vue'

const pokemons = ref([
  { name: 'Pikachu', type: 'Electric' },
  { name: 'Bulbasaur', type: 'Grass' },
  { name: 'Charmander', type: 'Fire' },
  { name: 'Squirtle', type: 'Water' },
  { name: 'Jolteon', type: 'Electric' },
])

// TODO: ref pour le nom
// TODO: ref pour le filtre
// TODO: computed filteredPokemons
// TODO: function addPokemon()
</script>

<template>
  <h1>Mon Pokédex</h1>
  <!-- TODO: input + button -->
  <!-- TODO: checkbox filtre -->
  <!-- TODO: v-for liste -->
</template>
Tutoriel Vue.js (FR) →

📋 Copiez le code de départ dans src/App.vue

16 / Pour aller plus loin

Ressources

Prêt à coder ?

Ouvrez votre terminal et lancez :

npm create vuetify