Vues
La section des vues décrit tout ce que nous avons besoin de savoir pour configurer la data et les vues pour une route spécifique dans notre application Nuxt. Les vues se composent d'un template, d'un layout et de la page actuelle. En plus de cela, nous pouvons définir des méta tags personnalisés pour la section head de chaque page. Ces derniers sont important pour le SEO (référencement naturel).

Composition d'une vue dans Nuxt
Pages
Chaque composant Page est un composant Vue mais Nuxt ajoute un attribut spécial et des fonctions pour rendre le développement de notre application aussi facile que possible.
<template>
  <h1 class="red">Hello World</h1>
</template>
<script>
  export default {
    head() {
      // Configurer les méta tags pour cette page
    }
    // ...
  }
</script>
<style>
  .red {
    color: red;
  }
</style>
 Propriétés du composant page
Il y a beaucoup de propriétés possibles sur un composant Page comme le head dans l'exemple juste au dessus.
Layouts
Les layouts sont un moyen efficace quand nous voulons changer l'apparence et le comportement de notre app Nuxt. Par exemple, inclure une sidebar ou avoir des layouts bien distincts entre une vue mobile et bureau.
Layout par défaut
Nous pouvons définir un layout par défaut en ajoutant un fichier default.vue dans le répertoire des layouts. Ceci sera utilisé pour toutes les pages qui n'ont pas de layout déjà spécifié. La seule chose qu'il sera nécessaire d'inclure dans le layout est le composant <Nuxt /> qui s'occupera de render le composant page.
<template>
  <Nuxt />
</template>
 Layout personnalisé
Nous pouvons créer des layouts personnalisés en ajoutant un fichier .vue dans le répertoire des layouts. Pour utiliser ce layout personnalisé, nous aurons besoin de specifier la propriété layout dans le composant page dans lequel nous voulons utiliser ce layout. La value sera le nom du layout personnalisé que nous aurons créé.
Pour créer un layout de blog, ajoutez un fichier blog.vue au répertoire layouts:
<template>
  <div>
    <div>La barre de navigation de mon blog</div>
    <Nuxt />
  </div>
</template>
 <Nuxt /> lorsque nous créons le composant pour y inclure le contenu de la page.Par la suite, il suffit d'attribuer la valeur blog à la propriété layout dans la page où nous souhaitons que le layout soit utilisé.
<template>
  <!-- notre template -->
</template>
<script>
  export default {
    layout: 'blog'
    // ici se trouvent les définitions du composant page
  }
</script>
 layout sur notre page (ex: layout: 'blog') alors le layout default.vue sera utilisé.Page d'erreur
La page d'erreur est le composant page qui sera toujours affiché lors d'une erreur (ce n'est pas le cas lors d'une utilisation en mode server-side rendering).
layouts, il devra être considéré comme une page.Comme dit ci-dessus, ce layout est spécial car il ne devra pas contenir de composant <Nuxt /> dans son template. Ce layout devra être vu comme un composant affiché lorsque des erreurs surviennent (404, 500, etc.). Comme pour les autres composants page, Nous pouvons appliquer un layout personnalisé pour la page erreur.
Nous pouvons personnaliser la page erreur en ajoutant un fichier layouts/error.vue:
<template>
  <div>
    <h1 v-if="error.statusCode === 404">Page non trouvée</h1>
    <h1 v-else>Une erreur est survenue</h1>
    <NuxtLink to="/">Page d'accueil</NuxtLink>
  </div>
</template>
<script>
  export default {
    props: ['error'],
    layout: 'error' // nous pouvons definir un layout personnalisé pour la page erreur
  }
</script>
 Document: App.html
Le template app est utilisé pour créer le cadre HTML pour le document de notre application Nuxt, ce dernier s'occupera d'injecter le contenu ainsi que les variables pour le head ainsi que le body. Ce fichier est automatiquement créé pour nous et a rarement besoin d'être modifié. Nous pouvons customiser le template HTML app utilisé par Nuxt pour inclure des scripts ou des classes CSS conditionnelles en créant un fichier app.html dans le répertoire source de notre projet, qui par défaut, n'est autre que la racine de votre projet.
Le template par défaut utilisé par Nuxt est:
<!DOCTYPE html>
<html {{ HTML_ATTRS }}>
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
    {{ APP }}
  </body>
</html>
 Un cas d'usage de personnalisation du template app serait d'ajouter des classes CSS conditionnelles pour IE:
<!DOCTYPE html>
<!--[if IE 9]><html class="lt-ie9 ie9" {{ HTML_ATTRS }}><![endif]-->
<!--[if (gt IE 9)|!(IE)]><!--><html {{ HTML_ATTRS }}><!--<![endif]-->
  <head {{ HEAD_ATTRS }}>
    {{ HEAD }}
  </head>
  <body {{ BODY_ATTRS }}>
    {{ APP }}
  </body>
</html>
 app.html, il est plutôt recommandé d'utiliser nuxt.config.js pour cet usage !
 
        Sébastien Chopin
       
 
        Nazaré da Piedade
       
 
        Nobu
       
 
        川音리오
       
 
        Maciek Palmowski
       
 
        Nestor Vera
       
 
        Daniel Roe
       
 
        Yue Yang
       
 
        Jeronimas
       
 
        Alessandro Carrano
       
 
        Clément Ollivier
       
 
        Alexander Lichter
       
 
        N3-rd
       
 
        Adrien Zaganelli
       
 
        Mag
       
 
        Stefan Huber
       
 
        Olga Bulat
       
 
        Paiva
       
 
        Florian Reuschel
       
 
        Savas Vedova
       
 
        Steven
       
 
        Vinícius Alves
       
 
        Kareem Dabbeet
       
 
        Valentín Costa
       
 
        Ryan Skinner
       
 
        Alex Hirzel
       
 
        Ajeet Chaulagain
       
 
        René Eschke
       
 
        Nico Devs
       
 
        Muhammad
       
 
        Naoki Hamada
       
 
        Tom
       
 
        Yann Aufray
       
 
        Anthony Chu
       
 
        Nuzhat Minhaz
       
 
        Lucas Portet
       
 
        Richard Schloss
       
 
        Bobby
       
 
        bpy
       
 
        Antony Konstantinidis
       
 
        Hibariya
       
 
        Jose Seabra
       
 
        Eze
       
 
        Florian Lefebvre
       
 
        Lucas Recoaro
       
 
        Julien SEIXAS