Adloun

Vue : construire une application web (école d'ingénieur) · Chapitre 1 · Exercice de TD

Impératif contre déclaratif

Premiers pas avec Vue · niveau 2

Énoncé

Récrire avec Vue la page suivante (un paragraphe <p id="etat"> et un bouton <button id="reserver">). Compter les lignes des deux versions, et dire ce qu'il faudrait modifier dans chacune pour afficher aussi le stock dans le titre de la page.


// L'énoncé : la version écrite à la main.
let stock = 2;
const etat = document.querySelector("#etat");
const reserver = document.querySelector("#reserver");

function afficher() {
  etat.textContent = stock === 0 ? "Épuisé" : `${stock} en stock`;
  reserver.disabled = stock === 0;
}

reserver.addEventListener("click", () => {
  stock -= 1;
  afficher();
});

afficher();

Corrigé


<div id="app">
  <p>{{ stock === 0 ? "Épuisé" : stock + " en stock" }}</p>
  <button type="button" :disabled="stock === 0" @click="stock--">Réserver</button>
</div>

const { createApp, ref } = Vue;

createApp({
  setup() {
    const stock = ref(2);
    return { stock };
  },
}).mount("#app");

Au chargement, puis après chaque clic, le paragraphe, et pour finir l'état du bouton :


2 en stock
1 en stock
Épuisé
true

Le script impératif compte 12 lignes de code, celui de la version Vue 7, dont 4 de pure structure (l'appel à createApp et la fonction setup). Surtout, pour afficher le stock dans un titre, la version Vue n'a besoin que d'une interpolation dans le gabarit, <h1>{{ stock }} en stock</h1>, alors que la version impérative demande une référence de plus vers le titre et une ligne de plus dans afficher.

100 % gratuit

La suite du chapitre est sur Adloun

Exercice suivant et tuteur

Sans compte : le cours et le premier QCM. Exercices et tuteur : inscription gratuite en 30 secondes, sans carte bancaire.

Le cours du chapitre · Tous les exercices du chapitre

Exercice suivant et tuteur →