diff --git a/src/v2/guide/components.md b/src/v2/guide/components.md index b613a4cdeb..526591fd0c 100644 --- a/src/v2/guide/components.md +++ b/src/v2/guide/components.md @@ -4,66 +4,32 @@ type: guide order: 11 --- -## Les composants, qu’est-ce que c’est ? +## Exemple de base -Les composants sont l'une des plus puissantes fonctionnalités de Vue. Ils vous permettent d'étendre les éléments de base du HTML pour encapsuler du code réutilisable. À un haut niveau, les composants sont des éléments personnalisables auxquels le compilateur de Vue attache un comportement. Dans certains cas, ils peuvent aussi apparaitre comme des éléments HTML natifs étendus avec l'attribut spécial `is`. - -Tous les composants Vue sont également des instances de Vue. Ils acceptent le même objet d'options (à l'exception de quelques options spécifiques à l'instance racine) et fournissent les mêmes hooks de cycle de vie. - -## Utilisation des composants - -### Inscription globale - -Nous avons appris dans les sections précédentes que nous pouvions créer une nouvelle instance de Vue avec : +Voici un exemple de composant Vue : ``` js -// Define a new component called button-counter +// Définition d'un nouveau composant appelé `button-counter` Vue.component('button-counter', { data: function () { return { count: 0 } }, - template: '' -}) -``` - -Pour inscrire un composant global, vous pouvez utiliser `Vue.component(tagName, options)`. Par exemple : - -``` js -Vue.component('my-component', { - // options + template: '' }) ``` -

Notez que Vue ne vous force pas à respecter les [règles du W3C](https://www.w3.org/TR/custom-elements/#concepts) en ce qui concerne les noms de balises personnalisées (tout en minuscules, obligation de contenir un trait d'union) bien que suivre cette convention soit considéré comme une bonne pratique.

- -Une fois inscrit, un composant peut être utilisé dans le template d'une instance en tant qu'élément personnalisé, ``. Assurez-vous que le composant soit inscrit **avant** l'instanciation de l'instance racine de Vue. Voici un exemple complet : +Les composants sont des instances de Vue réutilisables avec un nom : dans notre cas ``. Nous pouvons utiliser ce composant en tant qu'élément personnalisé à l'intérieure d'une instance de Vue racine créée avec `new Vue` : -``` html -
- +```html +
+
``` -``` js -// inscrire -Vue.component('my-component', { - template: '
Un composant personnalisé !
' -}) - -// créer une instance racine -new Vue({ - el: '#example' -}) -``` - -Ce qui donnera comme rendu : - -``` html -
-
Un composant personnalisé !
-
+```js +new Vue({ el: '#components-demo' }) ``` {% raw %} @@ -71,102 +37,32 @@ Ce qui donnera comme rendu :
{% endraw %} -### Inscription locale - -Vous n'êtes pas obligé d'inscrire chaque composant de manière globale. Vous pouvez rendre un composant disponible dans la portée d'un(e) autre composant/instance en l'inscrivant avec l'option `components` lors de l'instanciation : +Puisque les composants sont des instances de Vue réutilisables, ils acceptent les mêmes options que `new Vue` comme `data`, `computed`, `watch`, `methods`, et les hooks du cycle de vie. Les seules exceptions sont quelques options spécifiques à la racine comme `el`. -``` js -var Child = { - template: '
Un composant personnalisé !
' -} - -new Vue({ - // ... - components: { - // ne sera disponible que dans le template parent - 'my-component': Child - } -}) -``` - -La même encapsulation s’applique pour les autres fonctionnalités de Vue pouvant être inscrites, comme les directives. - -### Limitations de l'analyse d'un template à partir du DOM - -Quand vous utilisez le DOM en tant que template (par ex. : en utilisant l'option `el` pour monter un élément avec du contenu existant), vous êtes sujet à plusieurs restrictions dépendantes de la façon dont fonctionne le HTML, car Vue peut uniquement récupérer le contenu du template **après** qu'il ait été analysé et normalisé. Des éléments tels que `