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
# Configuration de pré-compilation (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
+
# Configuration de pré-compilation
2
2
3
-
We will assume you already know how to configure webpack for a client-only project. The config for an SSR project will be largely similar, but we suggest breaking the config into three files: *base*, *client*and*server*. The base config contains config shared for both environments, such as output path, aliases, and loaders. The server config and client config can simply extend the base config using[webpack-merge](https://github.com/survivejs/webpack-merge).
3
+
Nous allons suposez que vous savez déjà comment configurer webpack pour un projet uniquement client. La configuration pour un projet avec du SSR va être en grande partie similaire, mais nous vous suggérons de séparer vos configurations en trois fichiers : *base*, *client*et*server*. La configuration de base contient la configuration partagée par les deux environnements, comme les chemins de sortie, les aliases et les loaders. La configuration du serveur et la configuration du client peut simplement étendre la configuration de base en utilisant[webpack-merge](https://github.com/survivejs/webpack-merge).
4
4
5
-
## Server Config
5
+
## Configuration serveur
6
6
7
-
The server config is meant for generating the server bundle that will be passed to`createBundleRenderer`. It should look like this:
7
+
La configuration serveur est destinée à générer le paquetage serveur qui va être passé à`createBundleRenderer`. Elle devrait ressembler à cela :
Alternatively, you can also pass the bundle as an Object to `createBundleRenderer`. This is useful for hot-reload during development - see the HackerNews demo for a [reference setup](https://github.com/vuejs/vue-hackernews-2.0/blob/master/build/setup-dev-server.js).
61
+
Vous pouvez alternativement tout aussi bien passer le paquetage comme un objet à `createBundleRenderer`. Cela est utile pour le rechargement à chaud pendant le développement. Voyez la démo de HackerNews pour une [référence de mise en place](https://github.com/vuejs/vue-hackernews-2.0/blob/master/build/setup-dev-server.js).
62
62
63
-
### Externals Caveats
63
+
### Limitations externes
64
64
65
-
Notice that in the`externals`option we are whitelisting CSS files. This is because CSS imported from dependencies should still be handled by webpack. If you are importing any other types of files that also rely on webpack (e.g. `*.vue`, `*.sass`), you should add them to the whitelist as well.
65
+
Notons que dans l'option`externals`nous avons exclus les fichiers CSS. C'est parce que les fichiers CSS importés par dépendances doivent quand même être gérés par webpack. Si vous importez n'importe quels autres types de fichier également pris en charge par webpack (ex : `*.vue`, `*.styl`), vous pouvez également les ajouter à la liste des exceptions.
66
66
67
-
If you are using `runInNewContext: 'once'`or`runInNewContext: true`, then you also need to whitelist polyfills that modify`global`, e.g.`babel-polyfill`. This is because when using the new context mode, **code inside a server bundle has its own `global` object.**Since you don't really need it on the server when using Node 7.6+, it's actually easier to just import it in the client entry.
67
+
Si vous utilisez `runInNewContext: 'once'`ou`runInNewContext: true`, alors vous devrez également ajouter aux exceptions les polyfills qui modifient`global` comme par ex.`babel-polyfill`. Cela est dû au fait qu'en utilisant un nouveau mode de contexte, **le code à l'intérieur d'un paquetage serveur a son propre objet `global`.**Parce qu'il n'est plus nécessaire de faire cela côté serveur en utilisant Node.js 7.6+, c'est d'autant plus facile de ne les importer que côté client.
68
68
69
-
## Client Config
69
+
## Configuration cliente
70
70
71
-
The client config can remain largely the same with the base config. Obviously you need to point `entry`to your client entry file. Aside from that, if you are using `CommonsChunkPlugin`, make sure to use it only in the client config because the server bundle requires a single entry chunk.
71
+
La configuration cliente peut être en grande partie la même grâce à la configuration de base. Bien sur vous devez faire pointer `entry`sur votre fichier d'entrée client. En plus de cela, si vous utilisez le plugin `CommonsChunkPlugin`, assurez-vous de ne l'utiliser que dans la configuration cliente car le paquetage serveur requiert un unique fragment d'entrée.
72
72
73
-
### Generating`clientManifest`
73
+
### Générer le`clientManifest`
74
74
75
-
> requires version 2.3.0+
75
+
> requiert la version 2.3.0+
76
76
77
-
In addition to the server bundle, we can also generate a client build manifest. With the client manifest and the server bundle, the renderer now has information of both the server *and* client builds, so it can automatically infer and inject [preload / prefetch directives](https://css-tricks.com/prefetching-preloading-prebrowsing/)and css links / script tags into the rendered HTML.
77
+
En plus du paquetage serveur, nous pouvons également générer un build de manifeste client. Avec le manifeste client et le paquetage serveur, le moteur a maintenant les informations du build serveur *et* du build client, ainsi il peut automatiquement déduire et injecter les [directives pré-chargées et récupérées](https://css-tricks.com/prefetching-preloading-prebrowsing/)ainsi que les balises `<link>` / `<script>` dans le rendu HTML.
78
78
79
-
The benefits is two-fold:
79
+
Les bénéfices sont doubles :
80
80
81
-
1.It can replace `html-webpack-plugin`for injecting the correct asset URLs when there are hashes in your generated filenames.
81
+
1.Il peut remplacer le plugin `html-webpack-plugin`pour l'injection correcte d'URLs de fichiers quand il y a des hashs dans les noms de fichier générés.
82
82
83
-
2.When rendering a bundle that leverages webpack's on-demand code splitting features, we can ensure the optimal chunks are preloaded / prefetched, and also intelligently inject`<script>`tags for needed async chunks to avoid waterfall requests on the client, thus improving TTI (time-to-interactive).
83
+
2.Lors du rendu d'un paquetage qui s'appuie sur les fonctionnalités de scission de code à la demande de webpack, nous pouvons être assuré que les fragments optimaux sont pré-chargés / récupérés, et que les balises`<script>`des fragments asynchrones nécessaires pour éviter la cascade de requête depuis le client sont intelligemment injectés. Cela améliore le TTI (« time-to-interactive »).
84
84
85
-
To make use of the client manifest, the client config would look something like this:
85
+
Pour tirer partie du manifeste client, la configuration cliente devrait ressembler à ça :
With this setup, your server-rendered HTML for a build with code-splitting will look something like this (everything auto-injected):
125
+
Avec cette mise en place, votre rendu HTML côté serveur pour un build avec scission de code va ressembler à quelque chose comme ci-dessous (tout étant auto-injecté) :
126
126
127
127
```html
128
128
<html>
129
129
<head>
130
-
<!--chunks used for this render will be preloaded-->
130
+
<!--les fragments utilisés pour ce rendu vont être pré-chargés-->
131
131
<linkrel="preload"href="/manifest.js"as="script">
132
132
<linkrel="preload"href="/main.js"as="script">
133
133
<linkrel="preload"href="/0.js"as="script">
134
-
<!--unused async chunks will be prefetched (lower priority) -->
134
+
<!--les fragments asynchrones non utilisés vont seulement être récupérés (priorité basse) -->
<!--le fragment du manifeste devrait être le premier-->
141
141
<scriptsrc="/manifest.js"></script>
142
-
<!--async chunks injected before main chunk-->
142
+
<!--les fragments asynchrones sont injectés avant le fragment principal-->
143
143
<scriptsrc="/0.js"></script>
144
144
<scriptsrc="/main.js"></script>
145
145
</body>
146
146
</html>`
147
147
```
148
148
149
-
### Manual Asset Injection
149
+
### Injection manuel des fichiers
150
150
151
-
By default, asset injection is automatic when you provide the `template` render option. But sometimes you might want finer-grained control over how assets are injected into the template, or maybe you are not using a template at all. In such a case, you can pass`inject: false`when creating the renderer and manually perform asset injection.
151
+
Par défaut, l'injection des fichiers est automatique quand vous fournissez l'option de rendu `template`. Mais parfois vous aurez besoin d'une granularité de contrôle plus fine en ce qui concerne la manière dont les templates seront injectés, ou peut-être que vous n'utiliserez pas de template du tout. Dans tous les cas, vous pouvez passer`inject: false`quand le moteur est créé et manuellement réaliser l'injection des fichiers.
152
152
153
-
In the `renderToString` callback, the`context`object you passed in will expose the following methods:
153
+
Dans la fonction de rappel de `renderToString`, l'objet`context`que vous passez va exposer les méthodes suivantes :
154
154
155
155
-`context.renderStyles()`
156
156
157
-
This will return inline `<style>`tags containing all the critical CSS collected from the`*.vue`components used during the render. See [CSS Management](./css.md)for more details.
157
+
Cela va retourner une balise `<style>`contenant tout le CSS critique récupéré dans les composants`*.vue`et utilisés durant le rendu. Consultez [Gestion des CSS](./css.md)pour plus de détails.
158
158
159
-
If a`clientManifest`is provided, the returned string will also contain `<link rel="stylesheet">`tags for webpack-emitted CSS files (e.g. CSS extracted with`extract-text-webpack-plugin`or imported with`file-loader`)
159
+
Si un`clientManifest`est fourni, la chaîne retournée va également contenir la balise `<link rel="stylesheet">`pour les fichiers CSS emis par webpack (ex: CSS extrait avec`extract-text-webpack-plugin`ou importés avec`file-loader`)
160
160
161
161
-`context.renderState(options?: Object)`
162
162
163
-
This method serializes`context.state`and returns an inline script that embeds the state as`window.__INITIAL_STATE__`.
163
+
Cette méthode sérialise`context.state`et retourne une balise script qui contient l'état avec`window.__INITIAL_STATE__`.
164
164
165
-
The context state key and window state key can both be customized by passing an options object:
165
+
La clé et la valeur de l'état peuvent être tous les deux passés dans l'objet d'option :
166
166
167
167
```js
168
168
context.renderState({
@@ -175,33 +175,33 @@ In the `renderToString` callback, the `context` object you passed in will expose
175
175
176
176
-`context.renderScripts()`
177
177
178
-
-requires`clientManifest`
178
+
-requiert`clientManifest`
179
179
180
-
This method returns the `<script>`tags needed for the client application to boot. When using async code-splitting in the app code, this method will intelligently infer the correct async chunks to include.
180
+
Cette méthode retourne la balise `<script>`nécessaire pour que l'application cliente puisse démarrer. Lors de l'utilisation de la scission de code asynchrone dans le code de l'application, cette méthode va intélligemment trouver les fragments asynchrones correctes à inclure.
181
181
182
182
-`context.renderResourceHints()`
183
183
184
-
-requires`clientManifest`
184
+
-requiert`clientManifest`
185
185
186
-
This method returns the `<link rel="preload/prefetch">`resource hints needed for the current rendered page. By default it will:
186
+
Cette méthode retourne les balises `<link rel="preload/prefetch">`nécessaires au rendu optimisé de la page. Par défaut ce sera :
187
187
188
-
-Preload the JavaScript and CSS files needed by the page
189
-
-Prefetch async JavaScript chunks that might be needed later
188
+
-Pré-chargement (récupération et exécution) des fichiers JavaScript et CSS requis par la page,
189
+
-Récupération asynchrones des fragments JavaScript qui seront nécessaires plus tard.
190
190
191
-
Preloaded files can be further customized with the [`shouldPreload`](./api.md#shouldpreload) option.
191
+
Les fichiers pré-chargés peuvent être personnalisés plus en profondeur avec l'option [`shouldPreload`](./api.md#shouldpreload).
192
192
193
193
-`context.getPreloadFiles()`
194
194
195
-
-requires`clientManifest`
195
+
-requiert`clientManifest`
196
196
197
-
This method does not return a string - instead, it returns an Array of file objects representing the assets that should be preloaded. This can be used to programmatically perform HTTP/2 server push.
197
+
Cette méthode ne retourne pas de chaîne de caractère. À la place elle retourne un tableau d'objets représentant les fichiers qui devraient être pré-chargés. Cela peut-être utilisé pour programmatiquement réaliser de l'augmentation serveur HTTP/2.
198
198
199
-
Since the`template`passed to`createBundleRenderer`will be interpolated using `context`, you can make use of these methods inside the template (with `inject: false`):
199
+
Puisque le`template`passé à`createBundleRenderer`va être interpolé en utilisant le `context`, vous pouvez utiliser ces méthodes à l’intérieur de celui-ci (with `inject: false`):
200
200
201
201
```html
202
202
<html>
203
203
<head>
204
-
<!--use triple mustache for non-HTML-escaped interpolation -->
204
+
<!--utiliser les triples moustaches pour une interpolation sans HTML-->
205
205
{{{ renderResourceHints() }}}
206
206
{{{ renderStyles() }}}
207
207
</head>
@@ -213,4 +213,4 @@ Since the `template` passed to `createBundleRenderer` will be interpolated using
213
213
</html>
214
214
```
215
215
216
-
If you are not using `template`at all, you can concatenate the strings yourself.
216
+
Si vous n'utilisez pas `template`du tout, vous pouvez concaténer les chaînes vous-mêmes.
0 commit comments