You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: docs/en/advanced/lazy-loading.md
+18-15
Original file line number
Diff line number
Diff line change
@@ -2,23 +2,26 @@
2
2
3
3
Pendant la construction d'applications avec un empaqueteur (« bundler »), le paquetage JavaScript peut devenir un peu lourd, et donc cela peut affecter le temps de chargement de la page. Il serait plus efficace si l'on pouvait séparer chaque composant de route dans des fragments séparés, et de les charger uniquement lorsque la route est visitée.
4
4
5
-
En combinant la [fonctionnalité de composant asynchrone](https://fr.vuejs.org/v2/guide/components.html#Composants-asynchrones) de Vue et la [fonctionnalité de séparation de code](https://webpack.js.org/guides/code-splitting-require/) de webpack, il est très facile de charger à la volée les composants de route.
5
+
En combinant la [fonctionnalité de composant asynchrone](https://fr.vuejs.org/v2/guide/components.html#Composants-asynchrones) de Vue et la [fonctionnalité de séparation de code](https://webpack.js.org/guides/code-splitting-async/) de webpack, il est très facile de charger à la volée les composants de route.
6
6
7
-
Tout ce que nous avons à faire, c'est de définir les composants de notre route en tant que composants asynchrones :
7
+
Premièrement, un composant asynchrone peut définir une fonction fabrique qui retourne une Promesse (qui devrait résoudre le composant lui-même) :
8
8
9
9
```js
10
-
constFoo=resolve=> {
11
-
// `require.ensure` est une syntaxe spéciale de webpack pour une séparation de code.
12
-
require.ensure(['./Foo.vue'], () => {
13
-
resolve(require('./Foo.vue'))
14
-
})
15
-
}
10
+
constFoo= () =>Promise.resolve({ /* définition du composant */ })
16
11
```
17
12
18
-
Il y a aussi une alternative à la syntaxe de séparation de code utilisant l'inclusion à la sauce AMD, cela peut être simplifié en :
13
+
Deuxièmement, avec webpack 2, nous pouvons utiliser la syntaxe d'[import dynamique](https://github.com/tc39/proposal-dynamic-import) pour indiquer un point de scission de code :
19
14
20
15
```js
21
-
constFoo=resolve=>require(['./Foo.vue'], resolve)
16
+
import('./Foo.vue') // returns a Promise
17
+
```
18
+
19
+
> Note: if you are using Babel, you will need to add the [syntax-dynamic-import](http://babeljs.io/docs/plugins/syntax-dynamic-import/) plugin so that Babel can properly parse the syntax.
20
+
21
+
Combining the two, this is how to define an async component that will be automatically code-split by webpack:
22
+
23
+
```js
24
+
constFoo= () =>import('./Foo.vue')
22
25
```
23
26
24
27
Rien n'a besoin d'être modifié dans la configuration de la route, utilisez `Foo` comme d'habitude.
@@ -33,12 +36,12 @@ const router = new VueRouter({
33
36
34
37
### Grouper des composants dans le même fragment
35
38
36
-
Parfois on aimerait grouper tous les composants imbriqués sous la même route, dans un seul et même fragment asynchrone. Pour arriver à cela, nous avons besoin d'utiliser les [fragments nommés](https://webpack.js.org/guides/code-splitting-require/#chunkname) en donnant un nom au fragment en 3ème argument de `require.ensure`.
39
+
Parfois on aimerait grouper tous les composants imbriqués sous la même route, dans un seul et même fragment asynchrone. Pour arriver à cela, nous avons besoin d'utiliser les [fragments nommés](https://webpack.js.org/guides/code-splitting-async/#chunk-names) en donnant un nom au fragment en utilisant une syntaxe de commentaire spéciale (requires webpack > 2.4) :
webpack groupera tous les modules asynchrones avec le même nom de fragment, dans le même fragment asynchrone. Cela signifie aussi que nous n'avons plus besoin de lister explicitement les dépendances pour `require.ensure` (équivaut à passer un tableau vide).
47
+
webpack groupera tous les modules asynchrones avec le même nom de fragment dans le même fragment asynchrone.
There is a caveat to this: Your server will no longer report 404 errors as all not-found paths now serve up your `index.html` file. To get around the issue, you should implement a catch-all route within your Vue app to show a 404 page:
0 commit comments