From 9be3909c80e99d5fd9ceb02bcb5ffc680839bd80 Mon Sep 17 00:00:00 2001 From: rspt Date: Fri, 14 Apr 2017 16:03:32 +0200 Subject: [PATCH] Translate Guide/Plugins --- fr/guide/plugins.md | 107 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 107 insertions(+) create mode 100644 fr/guide/plugins.md diff --git a/fr/guide/plugins.md b/fr/guide/plugins.md new file mode 100644 index 000000000..b57ac0066 --- /dev/null +++ b/fr/guide/plugins.md @@ -0,0 +1,107 @@ +--- +title: Plugins +description: Nuxt.js vous permet de définir les plugins js à exécuter avant d'instancier l'application vue.js racine, il peut s'agir d'utiliser votre propre bibliothèque ou des modules externes. +--- + +> Nuxt.js vous permet de définir les plugins js à exécuter avant d'instancier l'application vue.js racine, il peut s'agir d'utiliser votre propre bibliothèque ou des modules externes. + +
Il est important de savoir que, dans le [cycle de vie d'une instance de Vue](https://vuejs.org/v2/guide/instance.html#Lifecycle-Diagram), les *hooks* `beforeCreate` et` created` sont appelés **à la fois côté client et du côté serveur**. Tous les autres *hooks* ne sont appelés que du client.
+ +## Modules externes + +Nous souhaitons utiliser des packages/modules externes dans notre application, un excellent exemple est [axios](https://github.com/mzabriskie/axios) pour les requêtes HTTP pour le serveur et le client. + +Nous l'installons via npm: + +```bash +npm install --save axios +``` + +Puis, nous pouvons l'utiliser directement dans nos pages: + +```html + + + +``` + +Mais il y a **un problème**, si nous importons axios dans une autre page, il sera à nouveau inclus dans le bundle de la page. Nous voulons inclure `axios` une seule fois dans notre application, pour cela, nous utilisons la clé `build.vendor` dans notre `nuxt.config.js`: + +```js +module.exports = { + build: { + vendor: ['axios'] + } +} +``` + +Ensuite, je peux importer `axios` partout sans avoir à m'inquiéter de l'importer plusieurs fois et de rendre le bundle plus lourd. + +## Plugins Vue + +Si nous voulons utiliser [vue-notifications](https://github.com/se-panfilov/vue-notifications) pour afficher des notifications dans notre application, nous devons configurer le plugin avant de lancer l'application. + +Dans `plugins/vue-notifications.js`: +```js +import Vue from 'vue' +import VueNotifications from 'vue-notifications' + +Vue.use(VueNotifications) +``` + +Puis, nous ajoutons le fichier dans l'attribut `plugins` de `nuxt.config.js`: +```js +module.exports = { + plugins: ['~plugins/vue-notifications'] +} +``` + +Pour en savoir plus sur l'attribut `plugins`, voir [plugins api](/api/configuration-plugins). + +Acutellement, `vue-notifications` sera inclu dans le bundle de l'application; mais comme il s'agit d'une librairie, nous voulons l'inclure dans le bundle `vendor` pour une meilleure mise en cache. + +Nous pouvons mettre à jour `nuxt.config.js` pour ajouter `vue-notifications` dans le bundle `vendor`: +```js +module.exports = { + build: { + vendor: ['vue-notifications'] + }, + plugins: ['~plugins/vue-notifications'] +} +``` + +## Côté client uniquement + +Certains plugins fonctionnent **uniquement côté navigateur**. Vous pouvez utiliser l'option `ssr: false` dans `plugins` pour exécuter le fichier uniquement côté client. + +Exemple: + +`nuxt.config.js`: +```js +module.exports = { + plugins: [ + { src: '~plugins/vue-notifications', ssr: false } + ] +} +``` + +`plugins/vue-notifications.js`: +```js +import Vue from 'vue' +import VueNotifications from 'vue-notifications' + +Vue.use(VueNotifications) +``` + +Dans le cas où vous devez importer certaines librairies uniquement pour le serveur, vous pouvez utiliser la variable `process.server` définie sur `true` lorsque le serveur web crée le fichier `server.bundle.js`.