Skip to content

Commit c752b3b

Browse files
MachinisteWebyyx990803
authored andcommitted
Update lazy-loading.md
Signed-off-by: Bruno Lesieur <[email protected]>
1 parent 4d81722 commit c752b3b

File tree

1 file changed

+18
-15
lines changed

1 file changed

+18
-15
lines changed

docs/fr/advanced/lazy-loading.md

+18-15
Original file line numberDiff line numberDiff line change
@@ -2,23 +2,26 @@
22

33
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.
44

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.
66

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) :
88

99
``` js
10-
const Foo = 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+
const Foo = () => Promise.resolve({ /* définition du composant */ })
1611
```
1712

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 :
1914

2015
``` js
21-
const Foo = 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+
const Foo = () => import('./Foo.vue')
2225
```
2326

2427
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({
3336

3437
### Grouper des composants dans le même fragment
3538

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) :
3740

3841
``` js
39-
const Foo = r => require.ensure([], () => r(require('./Foo.vue')), 'group-foo')
40-
const Bar = r => require.ensure([], () => r(require('./Bar.vue')), 'group-foo')
41-
const Baz = r => require.ensure([], () => r(require('./Baz.vue')), 'group-foo')
42+
const Foo = () => import(/* webpackChunkName: "group-foo" */ './Foo.vue')
43+
const Bar = () => import(/* webpackChunkName: "group-foo" */ './Bar.vue')
44+
const Baz = () => import(/* webpackChunkName: "group-foo" */ './Baz.vue')
4245
```
4346

44-
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.

0 commit comments

Comments
 (0)