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 !
Leoš Literák
Trizotti
Clément Ollivier
Sébastien Chopin
Marcello Bachechi
Rodolphe
Thomas Underwood
Shek Evgeniy
felipesuri
Lukasz Formela
Hugo Torzuoli
Sylvain Marroufin
Kareem Dabbeet
tramplay
Daniel Roe
verebelyicsaba
Adam
Nate Butler
Sandra Rodgers
Arpit Patidar
Matthew Kuehn
Steven DUBOIS
Travis Lindsey
syagawa
Maxime
かる
Al Power
Florent Delerue
quanghm
José Manuel Casani Guerra
Unai Mengual
kazuya kawaguchi
Michael Lynch
Tomachi
pooya parsa
Meir Roth
Brett
Adam Miedema
Thomas Bnt
Kazuki Furukawa
Anthony Ruelle
Christophe Carvalho Vilas-Boas
Roman Harmyder