Skip to content

Commit 873082f

Browse files
committed
Seconde correction et ajout des remarque de @kokal
Signed-off-by: Bruno Lesieur <[email protected]>
1 parent 91866d2 commit 873082f

File tree

1 file changed

+16
-16
lines changed

1 file changed

+16
-16
lines changed

en/data.md

+16-16
Original file line numberDiff line numberDiff line change
@@ -4,11 +4,11 @@
44

55
Pendant le SSR, nous allons essentiellement faire le rendu d'un « instantané » de notre application, aussi si votre application est liée à des données asynchrones, **ces données vont devoir être pré-chargées et résolues avant de débuter la phase de rendu**.
66

7-
Un autre point important côté client, les mêmes données doivent être disponibles avant que l'application ne soit montée, autrement, l'application côté client va faire le rendu d'un état différent et l'hydratation va échouer.
7+
Un autre point important côté client ; les mêmes données doivent être disponibles avant que l'application ne soit montée, autrement, l'application côté client va faire le rendu d'un état différent et l'hydratation va échouer.
88

9-
Pour résoudre cela, les données pré-chargées doivent vivre en dehors de la vue du composant, dans un gestionnaire de données, ou dans un « gestionnaire d'état ». Côté serveur, nous pouvons pré-charger et remplir les données dans le gestionnaire de donnée avant le rendu. De plus, nous allons en sérialiser et en injecter l'état dans le HTML. Le gestionnaire de données côté client pourra directement récupérer l'état depuis le HTML avant que l'application ne soit montée.
9+
Pour résoudre cela, les données pré-chargées doivent vivre en dehors de la vue du composant, dans un gestionnaire de données, ou dans un « gestionnaire d'état ». Côté serveur, nous pouvons pré-charger et remplir les données dans le gestionnaire de données avant le rendu. De plus, nous allons sérialiser et injecter l'état dans le HTML. Le gestionnaire de données côté client pourra directement récupérer l'état depuis le HTML avant que l'application ne soit montée.
1010

11-
Nous allons utiliser le gestionnaire d'état officiel (« store ») de la bibliothèque [Vuex](https://github.com/vuejs/vuex/) pour cette partie. Créons un fichier `store.js`, avec divers jeu de logique pour pré-charger un élément en nous basant sur un identifiant :
11+
Nous allons utiliser le gestionnaire d'état officiel (« store ») de la bibliothèque [Vuex](https://github.com/vuejs/vuex/) pour cette partie. Créons un fichier `store.js`, avec divers jeux de logique pour pré-charger un élément en nous basant sur un identifiant :
1212

1313
``` js
1414
// store.js
@@ -28,7 +28,7 @@ export function createStore () {
2828
},
2929
actions: {
3030
fetchItem ({ commit }, id) {
31-
// retournant la Promesse via `store.dispatch()` nous savons
31+
// retournant la Promesse via `store.dispatch()`, nous savons
3232
// quand les données ont été pré-chargées
3333
return fetchItem(id).then(item => {
3434
commit('setItem', { id, item })
@@ -76,9 +76,9 @@ export function createApp () {
7676

7777
## Collocation logique avec les composants
7878

79-
Donc, ou devons nous appeler le code en charge de l'action de pré-chargement ?
79+
Donc, devons nous appeler le code en charge de l'action de pré-chargement ?
8080

81-
Les données que nous avons besoin de pré-charger sont déterminées par la route visitée, qui va aussi déterminée quel composant va être rendu. En fait, les données nécessaire a une route donnée sont aussi les données nécessaire au composant pour être rendu pour une route. Aussi il serait naturel de placer la logique de pré-chargement à l'intérieur des composants de route.
81+
Les données que nous avons besoin de pré-charger sont déterminées par la route visitée, qui va aussi déterminer quels composants vont être rendus. En fait, les données nécessaires a une route donnée sont aussi les données nécessaires aux composants pour être rendus pour une route. Aussi il serait naturel de placer la logique de pré-chargement à l'intérieur des composants de route.
8282

8383
Nous allons exposer une fonction statique personnalisée `asyncData` sur nos composants de route. Notez que, puisque cette fonction va être appelée avant l'instanciation des composants, l'accès à `this` ne sera pas possible. Le store et les informations de route ont donc besoin d'être passés en tant qu'arguments :
8484

@@ -91,12 +91,12 @@ Nous allons exposer une fonction statique personnalisée `asyncData` sur nos com
9191
<script>
9292
export default {
9393
asyncData ({ store, route }) {
94-
// retourne la Promesse depuis l'action
94+
// retourner la Promesse depuis l'action
9595
return store.dispatch('fetchItem', route.params.id)
9696
},
9797
9898
computed: {
99-
// affiche l'élément depuis l'état du store.
99+
// afficher l'élément depuis l'état du store.
100100
item () {
101101
return this.$store.state.items[this.$route.params.id]
102102
}
@@ -107,7 +107,7 @@ export default {
107107

108108
## Pré-chargement de données côté serveur
109109

110-
Dans `entry-server.js` nous pouvons obtenir des composants qu'ils concordent avec une route grâce à `router.getMatchedComponents()`, et appeler `asyncData` si le composant l'expose. Nous avons ensuite besoin d'attacher l'état résolue au contexte de rendu.
110+
Dans `entry-server.js` nous pouvons obtenir les composants qui concordent avec une route grâce à `router.getMatchedComponents()`, et appeler `asyncData` si le composant l'expose. Nous avons ensuite besoin d'attacher l'état résolu au contexte de rendu.
111111

112112
``` js
113113
// entry-server.js
@@ -125,7 +125,7 @@ export default context => {
125125
return reject({ code: 404 })
126126
}
127127

128-
// appeler `asyncData()` sur toutes les routes concordant
128+
// appeler `asyncData()` sur toutes les routes concordantes
129129
Promise.all(matchedComponents.map(Component => {
130130
if (Component.asyncData) {
131131
return Component.asyncData({
@@ -134,11 +134,11 @@ export default context => {
134134
})
135135
}
136136
})).then(() => {
137-
// Après que chaque hook de pré-chargement soit résolue, notre store est maintenant
137+
// Après que chaque hook de pré-chargement soit résolu, notre store est maintenant
138138
// rempli avec l'état nécessaire au rendu de l'application.
139139
// Quand nous attachons l'état au contexte, et que l'option `template`
140140
// est utilisée pour faire le rendu, l'état va automatiquement être
141-
// sérialisé et injecté dans le HTML pour alimenter window.__INITIAL_STATE__.
141+
// être sérialisé et injecté dans le HTML en tant que `window.__INITIAL_STATE__`.
142142
context.state = store.state
143143

144144
resolve(app)
@@ -166,9 +166,9 @@ Côté client, il y a deux différentes approches pour gérer du pré-chargement
166166

167167
1. **Résoudre les données avant de changer de route :**
168168

169-
Avec cette stratégie, l'application va rester sur la vue courante jusqu'à ce que les données nécessaire à la vue suivante soient résolue. L'avantage est que la vue suivante pourra faire le rendu complet du contenu aussitôt qu'il sera prêt, mais si les données mettent trop de temps à charger, l'utilisateur va se sentir « bloquer » sur la vue courante. C'est pourquoi il est recommandé de fournir un indicateur de chargement si vous utilisez cette stratégie.
169+
Avec cette stratégie, l'application va rester sur la vue courante jusqu'à ce que les données nécessaires à la vue suivante soient résolues. L'avantage est que la vue suivante pourra faire le rendu complet du contenu aussitôt qu'il sera prêt, mais si les données mettent trop de temps à charger, l'utilisateur va se sentir « bloquer » sur la vue courante. C'est pourquoi il est recommandé de fournir un indicateur de chargement si vous utilisez cette stratégie.
170170

171-
Nous pouvons implémenter cette stratégie côté client en vérifiant la concordance des composants et en exécutant leurs fonctions `asyncData` à l'intérieur du hook global du routeur. Notez que nous devrions enregistrer cette route après que la route initiale ne soit prête et donc il n'est pas nécessaire de pré-charger de nouveau les données du serveur ayant déjà été pré-chargées.
171+
Nous pouvons implémenter cette stratégie côté client en vérifiant la concordance des composants et en exécutant leurs fonctions `asyncData` à l'intérieur du hook global du routeur. Notez que nous devrions enregistrer ce hook après que la route initiale ne soit prête et donc il n'est pas nécessaire de pré-charger de nouveau les données du serveur ayant déjà été pré-chargées.
172172

173173
``` js
174174
// entry-client.js
@@ -256,7 +256,7 @@ Vue.mixin({
256256

257257
## Scission de code du Store
258258

259-
Dans une grosse application, notre store vuex va très probablement être scinder dans de multiples modules. Bien sur, il est aussi possible de scinder le code de ces modules en fragments correspondant aux routes. Supposons que nous ayons le module store suivant :
259+
Dans une grosse application, notre store Vuex va très probablement être scinder dans de multiples modules. Bien sur, il est aussi possible de scinder le code de ces modules en fragments correspondant aux routes. Supposons que nous ayons le module store suivant :
260260

261261
``` js
262262
// store/modules/foo.js
@@ -313,4 +313,4 @@ Parce que le module est maintenant une dépendance du composant de route, il peu
313313

314314
---
315315

316-
Fiou, Cela fait pas mal de code ! Cela est dû au fait que le pré-chargement universel est probablement le problème le plus complexe d'une application avec rendu côté serveur et nous avons poser les bases pour un développement futur plus simple. Maintenant que cette base est mise en place, modifier des composants individuellement sera en fait plutôt agréable.
316+
Fiou, cela fait pas mal de code ! Cela est dû au fait que le pré-chargement universel est probablement le problème le plus complexe d'une application avec rendu côté serveur et nous avons poser les bases pour un développement futur plus simple. Maintenant que cette base est mise en place, modifier des composants individuellement sera en fait plutôt agréable.

0 commit comments

Comments
 (0)