Skip to content

Commit ec8be98

Browse files
Merge pull request #4 from Kocal/routing.md
Traduction de `routing.md`
2 parents 6521652 + b95edcd commit ec8be98

File tree

2 files changed

+31
-28
lines changed

2 files changed

+31
-28
lines changed

en/SUMMARY.md

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
- [Utilisation de base](basic.md)
22
- [Écrire du code universel (En)](universal.md)
33
- [Structure de code (En)](structure.md)
4-
- [Routage et fragmentation (En)](routing.md)
4+
- [Routage et scission du code](routing.md)
55
- [Pré-chargement et état (En)](data.md)
66
- [Hydratation côté client (En)](hydration.md)
77
- [Introduction à l'empaquetage (En)](bundle-renderer.md)

en/routing.md

+30-27
Original file line numberDiff line numberDiff line change
@@ -1,10 +1,10 @@
1-
# Routage et fragmentation (En) <br><br> *Cette page est en cours de traduction française. Revenez une autre fois pour lire une traduction achevée ou [participez à la traduction française ici](https://github.com/vuejs-fr/vue-ssr-docs).*
1+
# Routage et scission du code
22

3-
## Routing with `vue-router`
3+
## Routage avec `vue-router`
44

5-
You may have noticed that our server code uses a `*` handler which accepts arbitrary URLs. This allows us to pass the visited URL into our Vue app, and reuse the same routing config for both client and server!
5+
Vous avez sans doute remarqué que notre code serveur utilise le handler `*` qui accepte n'importe quelle URL. Cela nous permet de ré-utiliser la même configuration des routes pour le client et le serveur !
66

7-
It is recommended to use the official `vue-router` for this purpose. Let's first create a file where we create the router. Note similar to `createApp`, we also need a fresh router instance for each request, so the file exports a `createRouter` function:
7+
Il est recommandé d'utiliser le routeur officiel de Vue `vue-router`. Commençons par créer un fichier où sera créé le routeur. De manière similaire à `createApp`, nous aurons besoin d'une nouvelle instance du routeur pour chaque requêtes, donc ce fichier exporte une fonction `createRouter` :
88

99
``` js
1010
// router.js
@@ -23,7 +23,7 @@ export function createRouter () {
2323
}
2424
```
2525

26-
And update `app.js`:
26+
Et modifier `app.js` :
2727

2828
``` js
2929
// app.js
@@ -32,52 +32,55 @@ import App from './App.vue'
3232
import { createRouter } from './router'
3333

3434
export function createApp () {
35-
// create router instance
35+
// crée l'instance du routeur
3636
const router = createRouter()
3737

3838
const app = new Vue({
39-
// inject router into root Vue instance
39+
// injecte le routeur dans l'instance de Vue
4040
router,
4141
render: h => h(App)
4242
})
4343

44-
// return both the app and the router
44+
// retourne l'application et le routeur
4545
return { app, router }
4646
}
4747
```
4848

49-
Now we need to implement the server-side routing logic in `entry-server.js`:
49+
Maintenant, il faut implémenter la logique des routes côté serveur dans `entry-server.js` :
5050

5151
``` js
5252
// entry-server.js
5353
import { createApp } from './app'
5454

5555
export default context => {
56-
// since there could potentially be asynchronous route hooks or components,
57-
// we will be returning a Promise so that the server can wait until
58-
// everything is ready before rendering.
56+
// vu qu'il peut potentiellement avoir des composants ou des hooks
57+
// de routes asynchrones, on retourne une Promesse (« Promise ») de telle sorte que
58+
// le serveur patiente jusqu'à ce que tout soit prêt pour le rendu.
5959
return new Promise((resolve, reject) => {
6060
const { app, router } = createApp()
6161

62-
// set server-side router's location
62+
// défini la location du routeur serveur
6363
router.push(context.url)
6464

65-
// wait until router has resolved possible async components and hooks
65+
// on attend que le routeur ait terminé de traiter avec les composants et
66+
// hooks asynchrones
6667
router.onReady(() => {
6768
const matchedComponents = router.getMatchedComponents()
68-
// no matched routes, reject with 404
69+
// pas de routes correspondantes, on rejette la requête avec une 404
6970
if (!matchedComponents.length) {
7071
reject({ code: 404 })
7172
}
7273

73-
// the Promise should resolve to the app instance so it can be rendered
74+
// la Promise doit résoudre l'instance de l'application qui pourra
75+
// ensuite être rendue
7476
resolve(app)
7577
}, reject)
7678
})
7779
}
7880
```
7981

80-
Assuming the server bundle is already built (again, ignoring build setup for now), the server usage would look like this:
82+
En assumant que le bundle serveur soit déjà fait (encore une fois, on ignore l'étape de configuration du build pour l'instant), l'usage de ce bundle ressemblerait à ça :
83+
8184

8285
``` js
8386
// server.js
@@ -90,9 +93,9 @@ server.get('*', (req, res) => {
9093
renderer.renderToString(app, (err, html) => {
9194
if (err) {
9295
if (err.code === 404) {
93-
res.status(404).end('Page not found')
96+
res.status(404).end('Page non trouvée')
9497
} else {
95-
res.status(500).end('Internal Server Error')
98+
res.status(500).end('Erreur interne du serveur')
9699
}
97100
} else {
98101
res.end(html)
@@ -102,23 +105,23 @@ server.get('*', (req, res) => {
102105
})
103106
```
104107

105-
## Code-Splitting
108+
## Scission du code
106109

107-
Code-splitting, or lazy-loading part of your app, helps reducing the amount of assets that need to be downloaded by the browser for the initial render, and can greatly improve TTI (time-to-interactive) for apps with large bundles. The key is "loading just what is needed" for the initial screen.
110+
La scission du code, ou les parties chargées à la volée de votre application, aide à réduire la quantité de ressources qui a besoin d'être téléchargée par le navigateur pour le rendu initial, et peut grandement améliorer le TTI (time-to-interactive) pour les grosses applications. Le but est de « charger uniquement ce qui est nécessaire » pour l'écran initial.
108111

109-
Vue provides async components as a first-class concept, combining it with [webpack 2's support for using dynamic import as a code-split point](https://webpack.js.org/guides/code-splitting-async/), all you need to do is:
112+
Vue permet de créer des composants asynchrones en respectant le concept d'[objet de première classe](https://fr.wikipedia.org/wiki/Objet_de_premi%C3%A8re_classe). En les combinant avec [le support de webpack 2 pour l'utilisation de l'importation dynamique pour scinder le code](https://webpack.js.org/guides/code-splitting-async/), tout ce que vous avez à faire est :
110113

111114
``` js
112-
// changing this...
115+
// changer ça :
113116
import Foo from './Foo.vue'
114117

115-
// to this:
118+
// pour ça :
116119
const Foo = () => import('./Foo.vue')
117120
```
118121

119-
This would work under any scenario if you are building a pure client-side Vue app. However, there are some limitations when using this in SSR. First, you need to resolve all the async components upfront on the server before starting the render, because otherwise you will just get an empty placeholder in the markup. On the client, you also need to do this before starting the hydration, otherwise the client will run into content mismatch errors.
122+
Cela fonctionnera dans n'importe quel scénario si vous êtes en train de faire une application Vue uniquement pour le côté client. Toutefois, il y aura certaines limitations en l'utilisant avec du SSR. Premièrement, il faut résoudre tous les composants asynchrones à l'avance sur le serveur avant de faire le rendu, car sinon il y aura juste un emplacement vide dans le code HTML. Pour le côté client, il faut aussi faire cela avant de commencer l'hydratation des données, sinon il y aurait des erreurs d'incompatibilités sur le contenu.
120123

121-
This makes it a bit tricky to use async components at arbitrary locations in your app (we will likely improve this in the future). However, **it works seamlessly if you do it at the route level** - i.e. use async components in your route configuration - because `vue-router` will automatically resolve matched async components when resolving a route. What you need to do is make sure to use `router.onReady` on both server and client. We already did that in our server entry, and now we just need to update the client entry:
124+
Tout cela rend un peu compliqué l'utilisation des composants asynchrones à des endroits spécifiques dans votre application (nous allons probablement améliorer cela dans le futur). Toutefois, **cela fonctionne parfaitement si vous le faites au niveau de la route** - c.-à-d. d'utiliser les composants asynchrones dans la configuration des routes - car `vue-router` ira automatiquement résoudre les composants asynchrones nécessaires au bon fonctionnement de la route. Vous devez être sûr d'utiliser `router.onReady` sur le serveur et le client. Nous l'avons déjà fait pour le fichier d'entrée du serveur, il ne nous reste plus maintenant qu'à faire de même pour le fichier d'entrée du client :
122125

123126
``` js
124127
// entry-client.js
@@ -132,7 +135,7 @@ router.onReady(() => {
132135
})
133136
```
134137

135-
An example route config with async route components:
138+
Un exemple de configuration de route avec des composants asynchrones :
136139

137140
``` js
138141
// router.js

0 commit comments

Comments
 (0)