Skip to content
This repository was archived by the owner on Sep 3, 2024. It is now read-only.

Commit 594b508

Browse files
committed
Translate guide/routing
1 parent c1ed39b commit 594b508

File tree

1 file changed

+311
-0
lines changed

1 file changed

+311
-0
lines changed

fr/guide/routing.md

Lines changed: 311 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,311 @@
1+
---
2+
title: Routage
3+
description: Nuxt.js utilise le système de fichiers pour générer les routes de votre applications web.
4+
---
5+
6+
> Nuxt.js génère automatiquement la configuration pour [vue-router](https://github.com/vuejs/vue-router) en fonction de votre arborescence de fichiers Vue se trouvant au sein du répertoire `pages`.
7+
8+
## Routes basiques
9+
10+
Cette arborescence:
11+
12+
```bash
13+
pages/
14+
--| user/
15+
-----| index.vue
16+
-----| one.vue
17+
--| index.vue
18+
```
19+
20+
génère automatiquement:
21+
22+
```js
23+
router: {
24+
routes: [
25+
{
26+
name: 'index',
27+
path: '/',
28+
component: 'pages/index.vue'
29+
},
30+
{
31+
name: 'user',
32+
path: '/user',
33+
component: 'pages/user/index.vue'
34+
},
35+
{
36+
name: 'user-one',
37+
path: '/user/one',
38+
component: 'pages/user/one.vue'
39+
}
40+
]
41+
}
42+
```
43+
44+
## Routes dynamiques
45+
46+
Pour définir une route dynmaique à l'aide d'un paramètre, vous devez définir un fichier `.vue` OU un répertoire **préfixé par un souligner (`_`).
47+
48+
Cette arborescence:
49+
50+
```bash
51+
pages/
52+
--| _slug/
53+
-----| comments.vue
54+
-----| index.vue
55+
--| users/
56+
-----| _id.vue
57+
--| index.vue
58+
```
59+
60+
génère automatiquement:
61+
62+
```js
63+
router: {
64+
routes: [
65+
{
66+
name: 'index',
67+
path: '/',
68+
component: 'pages/index.vue'
69+
},
70+
{
71+
name: 'users-id',
72+
path: '/users/:id?',
73+
component: 'pages/users/_id.vue'
74+
},
75+
{
76+
name: 'slug',
77+
path: '/:slug',
78+
component: 'pages/_slug/index.vue'
79+
},
80+
{
81+
name: 'slug-comments',
82+
path: '/:slug/comments',
83+
component: 'pages/_slug/comments.vue'
84+
}
85+
]
86+
}
87+
```
88+
89+
Comme vous pouvez le voir, la route nommée `users-id` contient le chemin `:id?` ce qui le rend optionnel; si vous voulez le rendre obligatoire, créez un fichier `index.vue` dans le dossier `users/_id`.
90+
91+
### Validation des paramètres de routes
92+
93+
Nuxt.js vous permet de définir une méthode de validation dans votre composant de routage dynamique.
94+
95+
Par exemple: `pages/users/_id.vue`
96+
97+
```js
98+
export default {
99+
validate ({ params }) {
100+
// Must be a number
101+
return /^\d+$/.test(params.id)
102+
}
103+
}
104+
```
105+
106+
Si la méthode de validation ne renvoie pas `true`, Nuxt.js chargera automatiquement la page d'erreur 404.
107+
108+
Plus d'informations à propos de la méthode de validation: [API Pages validate](/api/pages-validate)
109+
110+
## Routes imbriquées
111+
112+
Nuxt.js vous permets de créer des routes imbriquées en utilisant les routes enfants de vue-router.
113+
114+
Pour définir le composant parent d'un route imbriquée, vous devez créer un fichier Vue avec le **même nom que le répertoire** qui contient les vues enfants.
115+
116+
<p class="Alert Alert--info">N'oubliez pas d'écrire `<nuxt-child/>` au sein du composant parent (fichier `.vue`).</p>
117+
118+
Cette arborescence:
119+
120+
```bash
121+
pages/
122+
--| users/
123+
-----| _id.vue
124+
-----| index.vue
125+
--| users.vue
126+
```
127+
128+
génère automatiquement:
129+
130+
```js
131+
router: {
132+
routes: [
133+
{
134+
path: '/users',
135+
component: 'pages/users.vue',
136+
children: [
137+
{
138+
path: '',
139+
component: 'pages/users/index.vue',
140+
name: 'users'
141+
},
142+
{
143+
path: ':id',
144+
component: 'pages/users/_id.vue',
145+
name: 'users-id'
146+
}
147+
]
148+
}
149+
]
150+
}
151+
```
152+
153+
## Routes dynamiques imbriquées
154+
155+
Il est possible avec Nuxt.js d'avoir des routes dynamiques imbriquées dans des routes dynamiques; bien que ce scénario ne devrait pas être monnaie courante.
156+
157+
Cette arborescence:
158+
159+
```bash
160+
pages/
161+
--| _category/
162+
-----| _subCategory/
163+
--------| _id.vue
164+
--------| index.vue
165+
-----| _subCategory.vue
166+
-----| index.vue
167+
--| _category.vue
168+
--| index.vue
169+
```
170+
171+
génère automatiquement:
172+
173+
```js
174+
router: {
175+
routes: [
176+
{
177+
path: '/',
178+
component: 'pages/index.vue',
179+
name: 'index'
180+
},
181+
{
182+
path: '/:category',
183+
component: 'pages/_category.vue',
184+
children: [
185+
{
186+
path: '',
187+
component: 'pages/_category/index.vue',
188+
name: 'category'
189+
},
190+
{
191+
path: ':subCategory',
192+
component: 'pages/_category/_subCategory.vue',
193+
children: [
194+
{
195+
path: '',
196+
component: 'pages/_category/_subCategory/index.vue',
197+
name: 'category-subCategory'
198+
},
199+
{
200+
path: ':id',
201+
component: 'pages/_category/_subCategory/_id.vue',
202+
name: 'category-subCategory-id'
203+
}
204+
]
205+
}
206+
]
207+
}
208+
]
209+
}
210+
```
211+
212+
## Transitions
213+
214+
Nuxt.js utilise le composant [&lt;transition&gt;](http://vuejs.org/v2/guide/transitions.html#Transitioning-Single-Elements-Components) afin de vous permettre de créer des transitions/animations époustouflantes entre vos routes.
215+
216+
### Paramètres globaux
217+
218+
<p class="Alert Alert--info">Dans Nuxt.js, le nom de la transition par défaut est `"page"`.</p>
219+
220+
Pour ajouter une transition de fondu à chaque page de votre application, nous avons besoin d'un fichier CSS qui est partagé sur toutes nos routes. Commençons par créer un fichier dans le dossier `assets`.
221+
222+
Notre CSS global dans `assets/main.css`:
223+
```css
224+
.page-enter-active, .page-leave-active {
225+
transition: opacity .5s;
226+
}
227+
.page-enter, .page-leave-active {
228+
opacity: 0;
229+
}
230+
```
231+
232+
Nous ajoutons son chemin dans notre config `nuxt.config.js`:
233+
```js
234+
module.exports = {
235+
css: [
236+
'assets/main.css'
237+
]
238+
}
239+
```
240+
241+
Plus d'informations à propos des transitions: [API Configuration transition](/api/pages-transition)
242+
243+
### Paramètres des pages
244+
245+
Vous êtes également libre de définir une transition personnalisée pour une seule page à l'aide de la propriété `transition`.
246+
247+
Nous ajoutons une nouvelle classe dans notre CSS global `assets/main.css`:
248+
```css
249+
.test-enter-active, .test-leave-active {
250+
transition: opacity .5s;
251+
}
252+
.test-enter, .test-leave-active {
253+
opacity: 0;
254+
}
255+
```
256+
257+
puis, nous utilions la propriété transition pour définir le nom de la classe à utiliser pour cette transition de page:
258+
```js
259+
export default {
260+
transition: 'test'
261+
}
262+
```
263+
264+
Plus d'informations à propos de la propriété transition: [API Pages transition](/api/pages-transition)
265+
266+
## Middleware
267+
268+
> Le middleware vous permet de définir une fonction personnalisée qui sera exécutée avant le rendu d'une page ou d'un groupe de pages.
269+
270+
**Tous les middlewares devraient être placés dans le répertoire `middleware/`.** Le nom du fichier étant le nom du middleware (`middleware/auth.js` deviendra le middleware `auth`).
271+
272+
Un middleware reçoit le [contexte](/api#context) comme premier argument:
273+
274+
```js
275+
export default function (context) {
276+
context.userAgent = context.isServer ? context.req.headers['user-agent'] : navigator.userAgent
277+
}
278+
```
279+
280+
Le middleware sont exécuté en séries dans l'ordre suivant:
281+
1. `nuxt.config.js`
282+
2. Layouts correspondants
283+
3. Pages correspondantes
284+
285+
Un middleware peut être asynchrone, retourner une `Promise` ou utiliser le `callback` (2ème arguement):
286+
287+
`middleware/stats.js`
288+
```js
289+
import axios from 'axios'
290+
291+
export default function ({ route }) {
292+
return axios.post('http://my-stats-api.com', {
293+
url: route.fullPath
294+
})
295+
}
296+
```
297+
298+
Puis, dans `nuxt.config.js`, un layout ou une page, utilisez le mot clef `middleware`:
299+
300+
`nuxt.config.js`
301+
```js
302+
module.exports = {
303+
router: {
304+
middleware: 'stats'
305+
}
306+
}
307+
```
308+
309+
Dans cet exemple, le middleware `stats` sera appelé à chaque changement de routes.
310+
311+
Pour voir un exemple "réel" utilisant les middlewares, jeter un oeil à [example-auth0](https://github.com/nuxt/example-auth0) sur GitHub.

0 commit comments

Comments
 (0)