From d2f7c7bbf001a189b59b5e38567da770ecf86fd9 Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Mon, 9 Oct 2017 12:02:02 +0200 Subject: [PATCH 01/18] Traduction du Guide de style Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index c007725b84..3ecba886c6 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -2,7 +2,7 @@ type: style-guide --- -# Style Guide beta +# Conventions beta This is the official style guide for Vue-specific code. If you use Vue in a project, it's a great reference to avoid errors, bikeshedding, and anti-patterns. However, we don't believe that any style guide is ideal for all teams or projects, so mindful deviations are encouraged based on past experience, the surrounding tech stack, and personal values. From 8f3ad0c0815ed584cecff68ce1c3711c56d8ab4a Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Mon, 9 Oct 2017 12:19:57 +0200 Subject: [PATCH 02/18] Usage of bikeshedding Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index 3ecba886c6..0d8ef109dc 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -4,9 +4,9 @@ type: style-guide # Conventions beta -This is the official style guide for Vue-specific code. If you use Vue in a project, it's a great reference to avoid errors, bikeshedding, and anti-patterns. However, we don't believe that any style guide is ideal for all teams or projects, so mindful deviations are encouraged based on past experience, the surrounding tech stack, and personal values. +Ceci est le guide des conventions officielles pour du code spécifique à Vue. Si vous utilisez Vue dans vos projets, c'est la référence pour éviter les erreurs, les mauvaises décisions ou les anti-patterns. Nous ne pensons cependant pas qu'un guide de conventions soit pertinent pour toutes les équipes ou tous les projets, ce que nous encourageons ici est basé sur nos expériences passées, les technologies que nous côtoyons ainsi que nos valeurs personnelles. -For the most part, we also avoid suggestions about JavaScript or HTML in general. We don't mind whether you use semicolons or trailing commas. We don't mind whether your HTML uses single-quotes or double-quotes for attribute values. Some exceptions will exist however, where we've found that a particular pattern is helpful in the context of Vue. +En grande partie, nous allons éviter les conventions à propos du JavaScript ou du HTML en eux-même. Nous ne nous soucions pas de votre utilisation des points-virgules ou de la place de la virgule en début de ligne. Nous ne nous soucierons pas non plus de savoir si votre HTML utilise des apostrophes ou des guillemets pour les valeurs des attributs. Quelques exceptions seront faites cependant, quand nous trouvons qu'un pattern spécifique est utile dans le contexte de Vue. > **Soon, we'll also provide tips for enforcement.** Sometimes you'll simply have to be disciplined, but wherever possible, we'll try to show you how to use ESLint and other automated processes to make enforcement simpler. From 7c3cc863fad21f51252642a2989a70cc5ac2d519 Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Mon, 9 Oct 2017 13:46:01 +0200 Subject: [PATCH 03/18] Nom de composant multiples mots Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 40 ++++++++++++++++++------------------- 1 file changed, 20 insertions(+), 20 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index 0d8ef109dc..71f7c92b98 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -8,48 +8,48 @@ Ceci est le guide des conventions officielles pour du code spécifique à Vue. S En grande partie, nous allons éviter les conventions à propos du JavaScript ou du HTML en eux-même. Nous ne nous soucions pas de votre utilisation des points-virgules ou de la place de la virgule en début de ligne. Nous ne nous soucierons pas non plus de savoir si votre HTML utilise des apostrophes ou des guillemets pour les valeurs des attributs. Quelques exceptions seront faites cependant, quand nous trouvons qu'un pattern spécifique est utile dans le contexte de Vue. -> **Soon, we'll also provide tips for enforcement.** Sometimes you'll simply have to be disciplined, but wherever possible, we'll try to show you how to use ESLint and other automated processes to make enforcement simpler. +> **Bientôt, nous fournirons des astuces pour la mise en application.** Même si certains point son une simple question de discipline, nous essayerons de vous montrer comment utiliser ESLint et d'autres processus automatisé pour mettre en place simplement ces conventions. -Finally, we've split rules into four categories: +Et donc, voici les quatre catégories de règles que nous avons retenues : -## Rule Categories +## Catégories de règle -### Priority A: Essential +### Priorité A : Capitale -These rules help prevent errors, so learn and abide by them at all costs. Exceptions may exist, but should be very rare and only be made by those with expert knowledge of both JavaScript and Vue. +Ces règles aident à éviter les erreurs, donc apprenez et respectez les à tout prix. Des exceptions peuvent exister, mais elles devraient être rare et prise uniquement avec un œil expert sur le JavaScript et Vue. -### Priority B: Strongly Recommended +### Priorité B : Fortement recommandée -These rules have been found to improve readability and/or developer experience in most projects. Your code will still run if you violate them, but violations should be rare and well-justified. +Ces règles ont été établie pour améliorer la lisibilité et / ou l'expérience des développeurs dans la majorité des projets. Votre code fonctionnera toujours si vous ne les suivez pas, mais ces écarts doivent être rares et justifiés. -### Priority C: Recommended +### Priorité C : Recommandée -Where multiple, equally good options exist, an arbitrary choice can be made to ensure consistency. In these rules, we describe each acceptable option and suggest a default choice. That means you can feel free to make a different choice in your own codebase, as long as you're consistent and have a good reason. Please do have a good reason though! By adapting to the community standard, you will: +Là ou de multible et équivalente options existe, un choix arbitraire a été fait pour assurer la consistence. Dans ces règles, nous décrivons chaque option acceptable et suggérons un choix par défaut. Cela signifie que vous pouvez faire des choix différent sur votre propre base de code, aussi longtemps que vous êtes consistant et avez de bonnes raisons. Mais garder toujours les bonnes raisons à l'esprit ! En vous alignant sur les standards de la communauté vous pourrez : -1. train your brain to more easily parse most of the community code you encounter -2. be able to copy and paste most community code examples without modification -3. often find new hires are already accustomed to your preferred coding style, at least in regards to Vue +1. amérioler votre cerveau à analyser plus facilement la plupard des codes communautaires rencontrés, +2. capable de copier et coller la plupard des exemples de code sans modification, +3. trouver de nouvelles recrues déjà habitués à votre style de codage préféré, au moins en ce qui concerne Vue. -### Priority D: Use with Caution +### Priorité D : Faire attention -Some features of Vue exist to accommodate rare edge cases or smoother migrations from a legacy code base. When overused however, they can make your code more difficult to maintain or even become a source of bugs. These rules shine a light on potentially risky features, describing when and why they should be avoided. +Certaines fonctionnalités de Vue existe pour régler des cas exceptionnelles ou rendre la migration d'une vielle version de code plus simple. Mais utiliser sans parciemonie, elle rendrons votre code difficile à maintenir et même deviendront une source de bogues. Ces règles mette en lumière des fonctionnalités potentiellement risquées, décrivant quand et pourquoi elle doivent être évitées. -## Priority A Rules: Essential (Error Prevention) +## Règles de priorité A : Capitale (Prévenir les erreurs) -### Multi-word component names essential +### Nom de composant à mots multiples capitale -**Component names should always be multi-word, except for root `App` components.** +**Les noms de composant devraient toujours être des mots multiples, à l'exception du composant racine `App`.** -This [prevents conflicts](http://w3c.github.io/webcomponents/spec/custom/#valid-custom-element-name) with existing and future HTML elements, since all HTML elements are a single word. +Ceci afin de [prévenir les conflits](http://w3c.github.io/webcomponents/spec/custom/#valid-custom-element-name) avec des éléments HTML futur ou existant car toutes les balises HTML sont en un seul mot. {% raw %}
{% endraw %} -#### Bad +#### Mauvais ``` js Vue.component('todo', { @@ -66,7 +66,7 @@ export default { {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Good +#### Bon ``` js Vue.component('todo-item', { From 3bda18cc774e1b4b453832bb75634081cb396427 Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Mon, 9 Oct 2017 13:47:51 +0200 Subject: [PATCH 04/18] capitale -> essentiel Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index 71f7c92b98..c6147700b2 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -16,7 +16,7 @@ Et donc, voici les quatre catégories de règles que nous avons retenues : ## Catégories de règle -### Priorité A : Capitale +### Priorité A : Essentiel Ces règles aident à éviter les erreurs, donc apprenez et respectez les à tout prix. Des exceptions peuvent exister, mais elles devraient être rare et prise uniquement avec un œil expert sur le JavaScript et Vue. @@ -38,11 +38,11 @@ Certaines fonctionnalités de Vue existe pour régler des cas exceptionnelles ou -## Règles de priorité A : Capitale (Prévenir les erreurs) +## Règles de priorité A : Essentiel (Prévenir les erreurs) -### Nom de composant à mots multiples capitale +### Nom de composant à mots multiples essentiel **Les noms de composant devraient toujours être des mots multiples, à l'exception du composant racine `App`.** From 955ea9dd2193a7fd5265e94da60203894cd77c7d Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Mon, 9 Oct 2017 18:24:22 +0200 Subject: [PATCH 05/18] Props part done Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 64 ++++++++++++++++++------------------- 1 file changed, 32 insertions(+), 32 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index c6147700b2..c3f9c3d44d 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -84,20 +84,20 @@ export default { -### Component data essential +### Données du composant data essentiel -**Component `data` must be a function.** +**La propriété `data` doit être une fonction.** -When using the `data` property on a component (i.e. anywhere except on `new Vue`), the value must be a function that returns an object. +Quand vous utilisez la propriété `data` dans un composant (par ex. partout sauf sur `new Vue`), la valeur doit être une fonction qui retourne un objet. {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} -When the value of `data` is an object, it's shared across all instances of a component. Imagine, for example, a `TodoList` component with this data: +Quand la valeur de la propriété `data` est un objet, elle est partagée à travers toutes les instances du composant. Imaginez, par exemple, un composant `TodoList` avec ces données : ``` js data: { @@ -106,9 +106,9 @@ data: { } ``` -We might want to reuse this component, allowing users to maintain multiple lists (e.g. for shopping, wishlists, daily chores, etc). There's a problem though. Since every instance of the component references the same data object, changing the title of one list will also change the title of every other list. The same is true for adding/editing/deleting a todo. +Nous voudrions réutiliser ce composant pour permettre aux utilisateurs de maintenir plusieurs listes (par ex. une liste de course, une liste de souhait, une liste de tâche, etc). Il y a cependant un problème. Comme toutes les instances du composant font référence au même objet de donnée, changer le titre de l'une des listes va aussi changer le titre de toutes les autres. Et c'est également vrai pour l'ajout, l'édition ou la suppression dans la liste. -Instead, we want each component instance to only manage its own data. For that to happen, each instance must generate a unique data object. In JavaScript, this can be accomplished by returning the object in a function: +À la place, nous voulons que chaque composant instancie ces données pour soi. Pour que cela soit possible, chaque instance doit générer un objet de données unique. En JavaScript, ceci peut-être accompli en retournant l'objet depuis une fonction : ``` js data: function () { @@ -121,7 +121,7 @@ data: function () { {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Bad +#### Mauvais ``` js Vue.component('some-comp', { @@ -141,7 +141,7 @@ export default { {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Good +#### Bon ``` js Vue.component('some-comp', { data: function () { @@ -153,7 +153,7 @@ Vue.component('some-comp', { ``` ``` js -// In a .vue file +// Dans un fichier `.vue` export default { data () { return { @@ -164,9 +164,9 @@ export default { ``` ``` js -// It's OK to use an object directly in a root -// Vue instance, since only a single instance -// will ever exist. +// Par contre l'usage par objet est possible dans +// l'instance racine de Vue, car il n'y a qu'une +// instance racine qui existe new Vue({ data: { foo: 'bar' @@ -177,28 +177,28 @@ new Vue({ -### Prop definitions essential +### Définitions de prop essentiel -**Prop definitions should be as detailed as possible.** +**Les définitions de prop devraient être aussi détaillé que possible.** -In committed code, prop definitions should always be as detailed as possible, specifying at least type(s). +Dans du code acté, les définitions de prop devraient être toujours aussi détaillé que possible, en spcifiant au moins les type(s). {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} -Detailed [prop definitions](https://vuejs.org/v2/guide/components.html#Prop-Validation) have two advantages: +Les [definitions de prop](https://vuejs.org/v2/guide/components.html#Prop-Validation) détaillée ont deux avantages : -- They document the API of the component, so that it's easy to see how the component is meant to be used. -- In development, Vue will warn you if a component is ever provided incorrectly formatted props, helping you catch potential sources of error. +- Elles documentent l'API du composant, il est ainsi possible de voir comment le composant est prévu d'être utilisé. +- En développement, Vue va vous avertir si le composant fournit un type de props incorrectement formaté et vous aider ainsi à trouver des sources d'erreur. {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Bad +#### Mauvais ``` js // This is only OK when prototyping @@ -207,7 +207,7 @@ props: ['status'] {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Good +#### Bon ``` js props: { @@ -216,7 +216,7 @@ props: { ``` ``` js -// Even better! +// Même mieux ! props: { status: { type: String, @@ -245,7 +245,7 @@ props: { {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -318,7 +318,7 @@ This makes overriding internal styles easier, with human-readable class names th {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -411,7 +411,7 @@ Beyond the `scoped` attribute, using unique class names can help ensure that 3rd {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -574,7 +574,7 @@ components/ {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -687,7 +687,7 @@ If a component only makes sense in the context of a single parent component, tha {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -763,7 +763,7 @@ components/ {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -944,7 +944,7 @@ OR {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -1164,7 +1164,7 @@ computed: { {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} @@ -1586,7 +1586,7 @@ Prefer class selectors over element selectors in `scoped` styles, because large {% raw %}
-

Detailed Explanation

+

Explication détaillée

{% endraw %} From 51dec6c927f31f9de2adbb6f4d7df6997c7f60eb Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Fri, 13 Oct 2017 18:12:10 +0200 Subject: [PATCH 06/18] In progress Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index c3f9c3d44d..404333bfef 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -236,11 +236,11 @@ props: { -### Keyed `v-for` essential +### Des clés pour `v-for` essentiel -**Always use `key` with `v-for`.** +**Toujours utiliser `key` avec `v-for`.** -`key` with `v-for` is _always_ required on components, in order to maintain internal component state down the subtree. Even for elements though, it's a good practice to maintain predictable behavior, such as [object constancy](https://bost.ocks.org/mike/constancy/) in animations. +`key` avec `v-for` est _toujours_ requis sur les composants afin de maintenir l'état des composant interne aligné au sous arbres. Même pour les éléments, c'est une bonne pratique pour garder un comportement prédictible pour de la [consistance d'objet](https://bost.ocks.org/mike/constancy/) dans les animations. {% raw %}
@@ -250,6 +250,7 @@ props: { {% endraw %} Let's say you have a list of todos: +Imaginons que nous ayouns une liste de tâches : ``` js data: function () { @@ -257,27 +258,27 @@ data: function () { todos: [ { id: 1, - text: 'Learn to use v-for' + text: 'Apprendre à utiliser `v-for`' }, { id: 2, - text: 'Learn to use key' + text: 'Apperndre à utiliser `key`' } ] } } ``` -Then you sort them alphabetically. When updating the DOM, Vue will optimize rendering to perform the cheapest DOM mutations possible. That might mean deleting the first todo element, then adding it again at the end of the list. +Puis nous les trions par ordre alphabétique. Quand le DOM est mis à jour, Vue va optimiser le rendu en exécutant les mutations dans le DOM les moins couteuse possible. Cela signifie de supprimer le premier élement de la liste, puis de l'ajouter de nouveau à la fin de la liste. -The problem is, there are cases where it's important not to delete elements that will remain in the DOM. For example, you may want to use `` to animate list sorting, or maintain focus if the rendered element is an ``. In these cases, adding a unique key for each item (e.g. `:key="todo.id"`) will tell Vue how to behave more predictably. +Le problème c'est qu'il y a des cas où il est important de ne pas supprimer les éléments et de les laisser dans le DOM. Par exemple, vous pourriez utiliser `` animer un tri de liste, ou garder le focus sur un élément rendu qui est un ``. Dans ces cas, ajouter une clé unique pour chaque élément (par ex. `:key="todo.id"`) va dire à Vue comment être plus prédictif. -In our experience, it's better to _always_ add a unique key, so that you and your team simply never have to worry about these edge cases. Then in the rare, performance-critical scenarios where object constancy isn't necessary, you can make a conscious exception. +De notre expérience, il est mieux de _toujours_ ajouter une clé unique. De cette manière vous et votre équipe n'aurez jamais à vous soucier des effets de bord. Ensuite, dans les rares scénarios critiques de performance où la constance des objets n'est pas nécessaire, vous pourrez faire une exception en connaissance de cause. {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Bad +#### Mauvais ``` html
    @@ -289,7 +290,7 @@ In our experience, it's better to _always_ add a unique key, so that you and you {% raw %}
{% endraw %} {% raw %}
{% endraw %} -#### Good +#### Bon ``` html
    @@ -305,9 +306,11 @@ In our experience, it's better to _always_ add a unique key, so that you and you -### Component style scoping essential +### Component style scoping essentiel + +**Pour les applications, le style du niveau `App` au sommet et pour les composants de la mises en page doivent être globaux, mais tous les autres styles des composants devraient être à portée limitée au composant.** -**For applications, styles in a top-level `App` component and in layout components may be global, but all other components should always be scoped.** +Ceci n'est pertinent que dans le cas des [fichiers monofichiers](../guide/single-file-components.html). Cela _ne_ nécessite _pas_ l'ajout de [l'attribut `scoped`](https://vue-loader.vuejs.org/en/features/scoped-css.html). This is only relevant for [single-file components](../guide/single-file-components.html). It does _not_ require that the [`scoped` attribute](https://vue-loader.vuejs.org/en/features/scoped-css.html) be used. Scoping could be through [CSS modules](https://vue-loader.vuejs.org/en/features/css-modules.html), a class-based strategy such as [BEM](http://getbem.com/), or another library/convention. From 694851f1e418b742b8cb05b97e6585e5f0d7208f Mon Sep 17 00:00:00 2001 From: Bruno Lesieur Date: Fri, 13 Oct 2017 18:36:46 +0200 Subject: [PATCH 07/18] Partie A de style-guide/index.md faites ! Signed-off-by: Bruno Lesieur --- src/v2/style-guide/index.md | 40 ++++++++++++++++++------------------- 1 file changed, 19 insertions(+), 21 deletions(-) diff --git a/src/v2/style-guide/index.md b/src/v2/style-guide/index.md index 404333bfef..f504488d10 100644 --- a/src/v2/style-guide/index.md +++ b/src/v2/style-guide/index.md @@ -306,17 +306,15 @@ De notre expérience, il est mieux de _toujours_ ajouter une clé unique. De cet -### Component style scoping essentiel +### Style des composants à portée limitée essentiel -**Pour les applications, le style du niveau `App` au sommet et pour les composants de la mises en page doivent être globaux, mais tous les autres styles des composants devraient être à portée limitée au composant.** +**Pour les applications, le style du niveau `App` au sommet et des composants de mises en page doivent être globaux, mais tous les autres styles des composants devraient être à portée limitée au composant.** -Ceci n'est pertinent que dans le cas des [fichiers monofichiers](../guide/single-file-components.html). Cela _ne_ nécessite _pas_ l'ajout de [l'attribut `scoped`](https://vue-loader.vuejs.org/en/features/scoped-css.html). +Ceci n'est pertinent que dans le cas de l'utilisation de [fichiers monofichiers](../guide/single-file-components.html). Cela _ne_ nécessite _pas_ l'ajout de [l'attribut `scoped`](https://vue-loader.vuejs.org/en/features/scoped-css.html). La portée limitée peut être faites avec les [modules CSS](https://vue-loader.vuejs.org/en/features/css-modules.html), une stratégie basée sur les classes comme [BEM](http://getbem.com/) ou d'autres bibliothèques ou conventions du même genre. -This is only relevant for [single-file components](../guide/single-file-components.html). It does _not_ require that the [`scoped` attribute](https://vue-loader.vuejs.org/en/features/scoped-css.html) be used. Scoping could be through [CSS modules](https://vue-loader.vuejs.org/en/features/css-modules.html), a class-based strategy such as [BEM](http://getbem.com/), or another library/convention. +**Les composant de bibliothèques, cependant, devrait utiliser une stratégie basé sur les classes plutôt que d'utiliser d'attribut `scoped`.** -**Component libraries, however, should prefer a class-based strategy instead of using the `scoped` attribute.** - -This makes overriding internal styles easier, with human-readable class names that don't have too high specificity, but are still very unlikely to result in a conflict. +Cela permet de surcharger les styles internes facilement, avec des noms de classes lisible par les humains avec un niveau de spécificité peu élevé qui entre en conflit vraiment très rarement. {% raw %}
    @@ -325,14 +323,14 @@ This makes overriding internal styles easier, with human-readable class names th {% endraw %} -If you are developing a large project, working with other developers, or sometimes include 3rd-party HTML/CSS (e.g. from Auth0), consistent scoping will ensure that your styles only apply to the components they are meant for. +Si vous développer un grand projet, et travaillez avec d'autres développeurs, ou parfois que vous incluez du HTML / CSS tiers (par ex. de Auth0), une portée limitée consistante va assurer que vos styles soient uniquement appliqué aux composants que vous souhaitiez. -Beyond the `scoped` attribute, using unique class names can help ensure that 3rd-party CSS does not apply to your own HTML. For example, many projects use the `button`, `btn`, or `icon` class names, so even if not using a strategy such as BEM, adding an app-specific and/or component-specific prefix (e.g. `ButtonClose-icon`) can provide some protection. +Au dela de l'attribut `scoped`, utiliser des noms de classe uniques vous assure que les CSS des bibliothèques tierces ne soient pas appliqués à votre propre HTML. Par exemple, beaucoup de projet utilise les classes de nom `button`, `btn` ou `icon` donc même si vous n'utilisez pas de stratégie comme BEM, ajouter un préfix dédié à l'application ou au composant (par ex. `ButtonClose-icon`) peut vous approter une certaine protection. {% raw %}
    {% endraw %} {% raw %}
    {% endraw %} -#### Bad +#### Mauvais ``` html