Activation de la découverte automatique

Depuis la v2.13, Nuxt peut importer automatiquement vos composants lorsqu'ils sont utilisés dans vos templates. Pour activer cette fonctionnalité, définissez components: true dans votre configuration:

nuxt.config.js
export default {
  components: true
}

Utilisation des composants

Une fois que vous avez créé vos composants dans le répertoire components, ils seront alors disponibles dans toute votre application sans qu'il soit nécessaire de les importer.

| components/
--| TheHeader.vue
--| TheFooter.vue
layouts/default.vue
<template>
  <div>
    <TheHeader />
    <Nuxt />
    <TheFooter />
  </div>
</template>

Noms des composants

Si vous avez des composants dans des répertoires imbriqués tels que :

| components/
--| base/
----| foo/
------| Button.vue

Le nom du composant sera basé sur son propre chemin et nom de fichier. Par conséquent, le composant sera :

<BaseFooButton />
Pour plus de clarté, il est recommandé que le nom du fichier du composant corresponde à son nom. (Donc, dans l'exemple ci-dessus, vous pouvez renommer Button.vue en BaseFooButton.vue.)

Si vous souhaitez utiliser une structure de répertoires personnalisée qui ne doit pas faire partie du nom du composant, vous pouvez spécifier explicitement ces répertoires :

| components/
--| base/
----| foo/
------| Button.vue
nuxt.config.js
components: {
  dirs: [
    '~/components',
    '~/components/base'
  ]
}

Et maintenant, dans votre template, vous pouvez utiliser FooButton au lieu de BaseFooButton.

pages/index.vue
<FooButton />
Pensez à nommer vos composants et répertoires en suivant le Guide de style de Vue .

Imports dynamiques

Pour importer dynamiquement un composant (également appelé chargement en arrière plan d'un composant), il vous suffit d'ajouter le préfixe Lazy au nom du composant.

layouts/default.vue
<template>
  <div>
    <TheHeader />
    <Nuxt />
    <LazyTheFooter />
  </div>
</template>

Ceci est particulièrement utile si le composant n'est pas toujours nécessaire. En utilisant le préfixe Lazy, vous pouvez retarder le chargement du code du composant jusqu'au bon moment, ce qui peut être utile pour optimiser la taille de votre bundle JavaScript.

pages/index.vue
<template>
  <div>
    <h1>Mountains</h1>
    <LazyMountainsList v-if="show" />
    <button v-if="!show" @click="show = true">Show List</button>
  </div>
</template>

<script>
export default {
  data() {
    return {
      show: false
    }
  }
}
</script>

Aide-mémoire

Editer cette page sur GitHub Mise à jour le Mon, July 12, 2021