Aller au contenu

Composante Vue et SFC

Les Composantes Vue.js

À quoi ça sert?

Une composante Vue est un bloc de code réutilisable qui encapsule du HTML, du JavaScript et du CSS. C'est comme une pièce de LEGO que tu peux utiliser plusieurs fois dans ton application.

Les composantes servent à:

  • Réutiliser du code - Écris une fois, utilise partout
  • Organiser ton application - Divise ton interface en morceaux logiques
  • Maintenir facilement - Change une composante sans affecter le reste
  • Collaborer - Chaque développeur peut travailler sur sa composante

Comment ça marche?

Une composante Vue a trois parties principales:

  1. Template (HTML) - Ce que l'utilisateur voit
  2. Script (JavaScript) - La logique et les données
  3. Style (CSS) - L'apparence visuelle

Les composantes peuvent:

  • Avoir leurs propres données (data)
  • Recevoir des props (données des parents)
  • Émettre des événements vers les parents
  • Avoir des méthodes et des propriétés computed

SFC - Single File Component

Les SFC (Single File Components), ou composantes monofichiers en français, sont des fichiers permettant de regrouper à la fois un template HTML, la logique JavaScript et les styles CSS d’une composante à l’intérieur d’un seul et même fichier.

Ce fichier est par la suite converti par un compilateur SFC en JavaScript et CSS standards pouvant être interprétés par les navigateurs.

Cette approche permet de découper un site complexe en composantes indépendantes, simples et modulables.

<template>
  <div class="menu"></div>
</template>

<script>
export default {
  data() {
    return {
      msg: 'Bonjour!'
    }
  }
}
</script>

<style>
.menu {
  background: blue;
}
</style>

Info

Ces fichiers utilisent l’extension *.vue.


En savoir plus sur Spécifications de la syntaxe des composants monofichiers

Importation d'une composante SFC

Les composantes SFC peuvent être importées dans un projet Vue comme tout module JavaScript standard.

import Menu from './components/Menu.vue'

Example

La norme veut que les noms de modules commencent par une majuscule. Dans l'exemple précédent, le module est nommé Menu.

CSS à portée limitée (Scoped CSS)

Dans le cadre d’un fichier SFC, la balise style peut se voir avoir l’attribut scoped. Cet attribut indique que les styles en question ne peuvent s’appliquer qu’aux éléments à l’intérieur de cette composante uniquement.

Pour ce faire, une clé est attribuée aux éléments HTML sous forme d'un attribut data-v-xxxxxxx. Toutes les règles de styles associées à cette composante se basent alors sur cette clé, limitant ainsi leur portée à cette composante uniquement.

Par exemple:

<template>
  <div class="menu">...</div>
</template>

<style scoped>
.menu {
  background: blue;
}
</style>

Sera converti en:

<template>
  <div class="menu" data-v-f3f3eg9>...</div>
</template>

<style>
.menu[data-v-f3f3eg9] {
  background: blue;
}
</style>

Une composante SFC peut aussi avoir plus d'une balise <style>. Notamment lorsque des styles devraient être globaux et que d'autres devraient être limités à la composante uniquement.

Par exemple:

/* Styles appliqués à tout le site, donc sans l'attribut scoped */
<style>
* {
  box-sizing: border-box;
}
</style>

/* Styles appliqués à cette composante uniquement */
<style scoped>
.menu {
  background: blue;
}
</style>


En savoir plus sur CSS à portée limitée (Scoped CSS)

Compilateurs SFC