diff --git a/src/v2/guide/mixins.md b/src/v2/guide/mixins.md index be5027f239..e7f7101058 100644 --- a/src/v2/guide/mixins.md +++ b/src/v2/guide/mixins.md @@ -4,14 +4,14 @@ type: guide order: 17 --- -## Basics +## Bases -
**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/vuejs.org).**
Mixins are a flexible way to distribute reusable functionalities for Vue components. A mixin object can contain any component options. When a component uses a mixin, all options in the mixin will be "mixed" into the component's own options. +Les mixins offrent une manière flexible de créer des fonctionnalités réutilisables pour les composants de Vue. Un objet mixin peut contenir toute option valide pour un composant. Quand un composant utilise un mixin, toutes les options du mixin seront "fusionnées" avec les options du composant. -Example: +Exemple: ``` js -// define a mixin object +// définir un objet mixin var myMixin = { created: function () { this.hello() @@ -23,7 +23,7 @@ var myMixin = { } } -// define a component that uses this mixin +// définition d'un composant qui utilise ce mixin var Component = Vue.extend({ mixins: [myMixin] }) @@ -31,9 +31,9 @@ var Component = Vue.extend({ var component = new Component() // -> "hello from mixin!" ``` -## Option Merging +## Fusion des options -When a mixin and the component itself contain overlapping options, they will be "merged" using appropriate strategies. For example, hook functions with the same name are merged into an array so that all of them will be called. In addition, mixin hooks will be called **before** the component's own hooks: +Quand un mixin et un composant définissent les mêmes options, elles seront fusionnées en utilisant la stratégie appropriée. Par exemple, les fonctions de hook avec le même nom seront fusionnées dans un tableau afin qu'elles soient toutes appelées. De plus, les hooks des mixins seront appelés **avant** les hooks du composant: ``` js var mixin = { @@ -53,7 +53,7 @@ new Vue({ // -> "component hook called" ``` -Options that expect object values, for example `methods`, `components` and `directives`, will be merged into the same object. The component's options will take priority when there are conflicting keys in these objects: +Les options qui attendent un objet, par exemple `methods`, `components` et `directives`, seront fusionnées dans le même objet. Les options du composant auront la priorité en cas de conflit sur une ou plusieurs clés de ces objets. ``` js var mixin = { @@ -84,14 +84,14 @@ vm.bar() // -> "bar" vm.conflicting() // -> "from self" ``` -Note that the same merge strategies are used in `Vue.extend()`. +Notez que les mêmes stratégies de fusion sont utilisées par `Vue.extend()`. -## Global Mixin +## Mixin global -You can also apply a mixin globally. Use caution! Once you apply a mixin globally, it will affect **every** Vue instance created afterwards. When used properly, this can be used to inject processing logic for custom options: +Vous pouvez aussi appliquer un mixin de manière globale. À utiliser avec prudence ! Une fois que vous appliquez un mixin globalement, il modifiera **toutes** les instances de vues créées ensuite. Bien utilisé, cela peut être exploité pour injecter une logique de traitement pour des options personnalisées : ``` js -// inject a handler for `myOption` custom option +// injection d'une fonction pour l'option personnalisée `myOption` Vue.mixin({ created: function () { var myOption = this.$options.myOption @@ -107,11 +107,11 @@ new Vue({ // -> "hello!" ``` -Use global mixins sparsely and carefully, because it affects every single Vue instance created, including third party components. In most cases, you should only use it for custom option handling like demonstrated in the example above. It's also a good idea to ship them as [Plugins](plugins.html) to avoid duplicate application.
+Utilisez les mixins globaux prudemment et rarement, parce qu'ils affectent chacune des Vue créées, y compris celles des librairies tierces. Dans la plupart des cas, vous devriez uniquement vous en servir pour la gestion des options personnalisées comme illustré dans l'exemple ci-dessus. C'est aussi une bonne idée de les encapsuler dans des [Plugins](plugins.html) pour éviter de les appliquer plusieurs fois par erreur.
-## Custom Option Merge Strategies +## Stratégie de fusion des options personnalisées -When custom options are merged, they use the default strategy, which simply overwrites the existing value. If you want a custom option to be merged using custom logic, you need to attach a function to `Vue.config.optionMergeStrategies`: +Quand les options personnalisées sont fusionnées, elles utilisent la stratégie par défaut, qui est simplement d'écraser la valeur existante. Si vous souhaitez appliquer une logique personnalisée pour la fusion d'une option personnalisée, vous devez attacher une nouvelle fonction à `Vue.config.optionMergeStrategies`: ``` js Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) { @@ -119,14 +119,14 @@ Vue.config.optionMergeStrategies.myOption = function (toVal, fromVal) { } ``` -For most object-based options, you can simply use the same strategy used by `methods`: +Pour la plupart des options qui attendent des objets, vous pouvez simplement utiliser la stratégie de fusion utilisée par `methods`: ``` js var strategies = Vue.config.optionMergeStrategies strategies.myOption = strategies.methods ``` -A more advanced example can be found on [Vuex](https://github.com/vuejs/vuex)'s 1.x merging strategy: +Un exemple plus avancé peut être trouvé dans la stratégie de fusion de [Vuex](https://github.com/vuejs/vuex) 1.x: ``` js const merge = Vue.config.optionMergeStrategies.computed diff --git a/src/v2/guide/single-file-components.md b/src/v2/guide/single-file-components.md index a5865005ae..c15d8fcd66 100644 --- a/src/v2/guide/single-file-components.md +++ b/src/v2/guide/single-file-components.md @@ -1,43 +1,44 @@ --- -title: Single File Components +title: Les composants monofichiers type: guide order: 19 --- ## Introduction -**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/vuejs.org).**
In many Vue projects, global components will be defined using `Vue.component`, followed by `new Vue({ el: '#container' })` to target a container element in the body of every page. +Dans beaucoup de projets Vue, des composants globaux seront définis en utilisant `Vue.component`, suivi de `new Vue({ el: '#container' })` pour cibler un élément conteneur dans le corps de chaque page. -This can work very well for small to medium-sized projects, where JavaScript is only used to enhance certain views. In more complex projects however, or when your frontend is entirely driven by JavaScript, these disadvantages become apparent: +Cela peut très bien fonctionner pour des petits projets ou des projets de taille moyenne, pour lesquels JavaScript est utilisé uniquement pour améliorer certaines vues. Cependant, pour des projets plus complexes, ou bien quand votre front-end est entièrement généré par JavaScript, des désavantages se manifestent : -- **Global definitions** force unique names for every component -- **String templates** lack syntax highlighting and require ugly slashes for multiline HTML -- **No CSS support** means that while HTML and JavaScript are modularized into components, CSS is conspicuously left out -- **No build step** restricts us to HTML and ES5 JavaScript, rather than preprocessors like Pug (formerly Jade) and Babel +- **Les définitions globales** forcent à avoir un nom unique pour chaque composant +- **Les templates sous forme de chaînes de caractères** ne bénéficient pas de la coloration syntaxique et requièrent l'usage de slashes disgracieux pour le HTML multiligne. +- **L'absence de support pour le CSS** signifie que le CSS ne peut pas être modularisé comme HTML et JavaScript +- **L'absence d'étape de build** nous restreint au HTML et à JavaScript ES5, sans pouvoir utiliser des préprocesseurs tels que Babel ou Pug (anciennement Jade). -All of these are solved by **single-file components** with a `.vue` extension, made possible with build tools such as Webpack or Browserify. +Tous ces désavantages sont résolus par les **composants monofichiers** avec une extension `.vue`, rendus possibles par les outils de build tels que Webpack ou Browserify. -Here's a simple example of a file we'll call `Hello.vue`: +Voici un exemple simple de fichier que nous appellerons `Hello.vue` :