-
Notifications
You must be signed in to change notification settings - Fork 103
Traduction de computed.md #29
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Changes from 3 commits
3e41491
be92aff
2c483ae
03d548d
977d06a
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,60 +1,60 @@ | ||
--- | ||
title: Computed Properties and Watchers | ||
title: Propriétés calculées et observateurs | ||
type: guide | ||
order: 5 | ||
--- | ||
|
||
## Computed Properties | ||
## Propriétés calculées | ||
|
||
<p class="tip">**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).**</p>In-template expressions are very convenient, but they are really only meant for simple operations. Putting too much logic into your templates can make them bloated and hard to maintain. For example: | ||
Les expressions dans le template sont très pratiques, mais elles sont uniquement destinées pour des opérations simples. Mettre trop de logique dans vos templates peut les rendre trop verbeux et difficiles à maintenir. Par exemple : | ||
|
||
``` html | ||
<div id="example"> | ||
{{ message.split('').reverse().join('') }} | ||
</div> | ||
``` | ||
|
||
At this point, the template is no longer simple and declarative. You have to look at it for a second before realizing that it displays `message` in reverse. The problem is made worse when you want to include the reversed message in your template more than once. | ||
À cet endroit, le template n'est ni simple, ni déclaratif. Vous devez le regarder pendant une seconde avant de réaliser qu'il affiche `message` dans le sens inverse. Le problème s'aggrave lorsque vous souhaitez inclure le message inversé plusieurs fois dans votre template. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. At this point => À ce stade |
||
|
||
That's why for any complex logic, you should use a **computed property**. | ||
C'est pourquoi vous devriez utiliser des **propriétés calculées** pour des logiques complexes. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pour toute logique complexe |
||
|
||
### Basic Example | ||
### Exemple basique | ||
|
||
``` html | ||
<div id="example"> | ||
<p>Original message: "{{ message }}"</p> | ||
<p>Computed reversed message: "{{ reversedMessage }}"</p> | ||
<p>Message original : "{{ message }}"</p> | ||
<p>Message inversé calculé : "{{ reversedMessage }}"</p> | ||
</div> | ||
``` | ||
|
||
``` js | ||
var vm = new Vue({ | ||
el: '#example', | ||
data: { | ||
message: 'Hello' | ||
message: 'Bonjour' | ||
}, | ||
computed: { | ||
// a computed getter | ||
// un accesseur calculé | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. je mettrais aussi (getter) entre parenthèses ici car c'est la première occurrence |
||
reversedMessage: function () { | ||
// `this` points to the vm instance | ||
// `this` pointe sur l'instance vm | ||
return this.message.split('').reverse().join('') | ||
} | ||
} | ||
}) | ||
``` | ||
|
||
Result: | ||
Résultat : | ||
|
||
{% raw %} | ||
<div id="example" class="demo"> | ||
<p>Original message: "{{ message }}"</p> | ||
<p>Computed reversed message: "{{ reversedMessage }}"</p> | ||
<p>Message original : "{{ message }}"</p> | ||
<p>Message inversé calculé : "{{ reversedMessage }}"</p> | ||
</div> | ||
<script> | ||
var vm = new Vue({ | ||
el: '#example', | ||
data: { | ||
message: 'Hello' | ||
message: 'Bonjour' | ||
}, | ||
computed: { | ||
reversedMessage: function () { | ||
|
@@ -65,38 +65,38 @@ var vm = new Vue({ | |
</script> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
ou p-e
au niveau de There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. ok |
||
{% endraw %} | ||
|
||
Here we have declared a computed property `reversedMessage`. The function we provided will be used as the getter function for the property `vm.reversedMessage`: | ||
Ici, nous avons déclaré une propriété calculée `reversedMessage`. La fonction que nous avons fournie sera utilisée comme une fonction accesseur (getter) pour la propriété `vm.reversedMessage` : | ||
|
||
``` js | ||
console.log(vm.reversedMessage) // -> 'olleH' | ||
vm.message = 'Goodbye' | ||
console.log(vm.reversedMessage) // -> 'eybdooG' | ||
console.log(vm.reversedMessage) // -> 'ruojnoB' | ||
vm.message = 'Au revoir' | ||
console.log(vm.reversedMessage) // -> 'riover uA' | ||
``` | ||
|
||
You can open the console and play with the example vm yourself. The value of `vm.reversedMessage` is always dependent on the value of `vm.message`. | ||
Vous pouvez ouvrir la console et jouer vous-même avec l'exemple de vm. La valeur de `vm.reversedMessage` dépend toujours de la valeur de `vm.message`. | ||
|
||
You can data-bind to computed properties in templates just like a normal property. Vue is aware that `vm.reversedMessage` depends on `vm.message`, so it will update any bindings that depend on `vm.reversedMessage` when `vm.message` changes. And the best part is that we've created this dependency relationship declaratively: the computed getter function has no side effects, which makes it easy to test and reason about. | ||
Vous pouvez lier des données aux propriétés calculées dans les templates comme une propriété normale. Vue est au courant que `vm.reversedMessage` dépend de `vm.message`, donc il mettra à jour toutes les liaisons qui dépendent de `vm.reversedMessage` lorsque `vm.message` changera. Et ce qui est encore mieux c'est que nous avons crée cette relation de dépendance de façon déclarative : la fonction de l'accesseur calculé n'a pas d'effets secondaires, ce qui la rend facile à tester et à raisonner. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Et le mieux dans tout cela est que |
||
|
||
### Computed Caching vs Methods | ||
### Mise en cache dans `computed` vs `methods` | ||
|
||
You may have noticed we can achieve the same result by invoking a method in the expression: | ||
Vous avez peut-être remarqué que nous pouvons accomplir le même résultat en invoquant une méthode dans l'expression : | ||
|
||
``` html | ||
<p>Reversed message: "{{ reverseMessage() }}"</p> | ||
<p>Message inversé : "{{ reverseMessage() }}"</p> | ||
``` | ||
|
||
``` js | ||
// in component | ||
// dans le composant | ||
methods: { | ||
reverseMessage: function () { | ||
return this.message.split('').reverse().join('') | ||
} | ||
} | ||
``` | ||
|
||
Instead of a computed property, we can define the same function as a method instead. For the end result, the two approaches are indeed exactly the same. However, the difference is that **computed properties are cached based on their dependencies.** A computed property will only re-evaluate when some of its dependencies have changed. This means as long as `message` has not changed, multiple access to the `reversedMessage` computed property will immediately return the previously computed result without having to run the function again. | ||
Au lieu d'une propriété calculée, nous pouvons définir à la place la même fonction dans une méthode. Pour le résultat final, les deux approches sont en effet exactement les mêmes. Cependant, la différence est que **les propriétés déclarées dans `computed` sont mis en cache basées sur leurs dépendances.** Une propriété calculée sera réévaluée uniquement quand certaines de ses dépendances auront changé. Cela signifie que tant que `message` n'a pas changé, les multiples accès à la propriété calculée `reversedMessage` retourneront immédiatement le résultat précédemment calculé sans avoir à relancer l'exécution de la fonction. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. supprimer "à la place" (doublon avec Au lieu de) nous pouvons définir la même fonction en tant que méthode. mises en cache selon leurs dépendances sans avoir à réexécuter la fonction |
||
|
||
This also means the following computed property will never update, because `Date.now()` is not a reactive dependency: | ||
Cela signifie également que la propriété calculée suivante ne sera jamais mise à jour, parce que `Date.now()` n'est pas une dépendance réactive : | ||
|
||
``` js | ||
computed: { | ||
|
@@ -106,13 +106,13 @@ computed: { | |
} | ||
``` | ||
|
||
In comparison, a method invocation will **always** run the function whenever a re-render happens. | ||
En comparaison, une invocation de méthode exécutera **toujours** la fonction à chaque fois que se produira un re-déclenchement du rendu. | ||
|
||
Why do we need caching? Imagine we have an expensive computed property **A**, which requires looping through a huge Array and doing a lot of computations. Then we may have other computed properties that in turn depend on **A**. Without caching, we would be executing **A**’s getter many more times than necessary! In cases where you do not want caching, use a method instead. | ||
Pourquoi avons-nous besoin de mettre en cache ? Imaginez que nous avons une propriété calculée couteuse **A**, qui exige une boucle dans un énorme tableau et qui fait beaucoup de calculs. Alors nous pouvons avoir d’autres propriétés calculées qui dépendent à leur tour de **A**. Sans la mise en cache, nous exécuterions l'accesseur de **A** autant de fois que nécessaire ! Dans les cas où vous ne souhaitez pas la mise en cache, utilisez une méthode à la place. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. coûteuse |
||
|
||
### Computed vs Watched Property | ||
### Propriétés calculées vs observées | ||
|
||
Vue does provide a more generic way to observe and react to data changes on a Vue instance: **watch properties**. When you have some data that needs to change based on some other data, it is tempting to overuse `watch` - especially if you are coming from an AngularJS background. However, it is often a better idea to use a computed property rather than an imperative `watch` callback. Consider this example: | ||
Vue fournit vraiment une façon plus générique d'observer et de réagir aux changements de données sur une instance de Vue : **les propriétés watch**. Quand vous avez des données qu’il faut changer basées sur d’autres données, il est tentant d’abuser de `watch` (surtout si vous venez du monde d'AngularJS). Toutefois, il est souvent préférable d’utiliser une propriété calculée et pas une fonction de retour impérative de `watch`. Considérez cet exemple : | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pourquoi "vraiment" dans la première phrase ? qu'il faut changer selon d'autres données et non une fonction de retour impérative comme |
||
|
||
``` html | ||
<div id="demo">{{ fullName }}</div> | ||
|
@@ -137,7 +137,7 @@ var vm = new Vue({ | |
}) | ||
``` | ||
|
||
The above code is imperative and repetitive. Compare it with a computed property version: | ||
Le code ci-dessus est impératif et répétitif. Comparez-le avec une version de propriété calculée : | ||
|
||
``` js | ||
var vm = new Vue({ | ||
|
@@ -154,21 +154,21 @@ var vm = new Vue({ | |
}) | ||
``` | ||
|
||
Much better, isn't it? | ||
C'est mieux, n'est-ce pas ? | ||
|
||
### Computed Setter | ||
### Mutateur calculé | ||
|
||
Computed properties are by default getter-only, but you can also provide a setter when you need it: | ||
Les propriétés calculées ont par défaut uniquement un accesseur, mais vous pouvez également fournir un mutateur (setter) quand vous en avez besoin : | ||
|
||
``` js | ||
// ... | ||
computed: { | ||
fullName: { | ||
// getter | ||
// accesseur | ||
get: function () { | ||
return this.firstName + ' ' + this.lastName | ||
}, | ||
// setter | ||
// mutateur | ||
set: function (newValue) { | ||
var names = newValue.split(' ') | ||
this.firstName = names[0] | ||
|
@@ -179,67 +179,67 @@ computed: { | |
// ... | ||
``` | ||
|
||
Now when you run `vm.fullName = 'John Doe'`, the setter will be invoked and `vm.firstName` and `vm.lastName` will be updated accordingly. | ||
Maintenant, lorsque vous exécutez `vm.fullName = 'John Doe'`, le mutateur sera invoqué, `vm.firstName` et `vm.lastName` seront mis à jour en conséquence. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. sera invoqué et There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. J'avais mis une virgule pour éviter la répétition du "et" There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. pas moyen d'éviter la répétition ici sans casser le rythme de la phrase, il faut deux fois "et" comme pour le texte original |
||
|
||
## Watchers | ||
## Observateurs | ||
|
||
While computed properties are more appropriate in most cases, there are times when a custom watcher is necessary. That's why Vue provides a more generic way to react to data changes through the `watch` option. This is most useful when you want to perform asynchronous or expensive operations in response to changing data. | ||
Bien que les propriétés calculées soient plus appropriées dans la plupart des cas, parfois un observateur personnalisé est nécessaire. C'est pour cela que Vue fournit une façon plus générique de réagir aux changements de données à travers l'option `watch`. Ceci est très utile lorsque vous souhaitez exécuter des opérations asynchrones ou coûteuses en réponse aux données changeantes. | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. à des données changeantes |
||
|
||
For example: | ||
Par exemple : | ||
|
||
``` html | ||
<div id="watch-example"> | ||
<p> | ||
Ask a yes/no question: | ||
Posez votre question (réponse par Oui ou Non) : | ||
<input v-model="question"> | ||
</p> | ||
<p>{{ answer }}</p> | ||
</div> | ||
``` | ||
|
||
``` html | ||
<!-- Since there is already a rich ecosystem of ajax libraries --> | ||
<!-- and collections of general-purpose utility methods, Vue core --> | ||
<!-- is able to remain small by not reinventing them. This also --> | ||
<!-- gives you the freedom to just use what you're familiar with. --> | ||
<!-- Puisqu'il y a déjà un riche écosystème de bibliothèques ajax --> | ||
<!-- et de collections de méthodes d'utilité générale, en ne les --> | ||
<!-- réinventant pas, la base de Vue peut rester petit. Cela vous --> | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. le noyau de Vue peut rester petit |
||
<!-- donne aussi la liberté d’utiliser tout ce qui vous est familier. --> | ||
<script src="https://unpkg.com/[email protected]/dist/axios.min.js"></script> | ||
<script src="https://unpkg.com/[email protected]/lodash.min.js"></script> | ||
<script> | ||
var watchExampleVM = new Vue({ | ||
el: '#watch-example', | ||
data: { | ||
question: '', | ||
answer: 'I cannot give you an answer until you ask a question!' | ||
answer: 'Je ne peux pas vous donner une réponse avant que vous ne posiez une question !' | ||
}, | ||
watch: { | ||
// whenever question changes, this function will run | ||
// à chaque fois que la question change, cette fonction s'exécutera | ||
question: function (newQuestion) { | ||
this.answer = 'Waiting for you to stop typing...' | ||
this.answer = 'J\'attends que vous arrêtiez de taper ...' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Je mettrais
avec et pas d'espace entre taper et ... There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. En effet, on peut utiliser la double quote. Toutefois, Vue utilise tout le temps la simple quote dans tous les exemples. Donc pour garder une certaine logique, je préfère laisser la simple quote. De plus si jamais on utilise un linter, on utilise souvent la même règle. Pour l'instant je laisse comme ça (je fais mon rebelle 😄 ) de plus cela fait un exemple pour gérer l'apostrophe en français. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. se référer à la conf ESLint pour le codestyle : https://github.com/vuejs/eslint-config-vue/blob/master/index.js There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. D'après cette ligne 'quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }], dans ce document : https://github.com/vuejs/eslint-config-vue/blob/master/index.js J'interprète : « Utiliser les simple quotes » var test1 = 'Je suis une string normal'; « Mais éviter les échappements : » var test2 = "J'aime pas trop ça mais dans ce cas je suis obligé"; au lieu de var test2 = 'J\'aime pas trop ça mais dans ce cas je suis obligé'; ou var test3 = '<p>' +
"J'aime pas non plus mais faut bien" +
'</p>'; au lieu de var test3 = '<p>\
J\'aime pas non plus mais faut bien\
</p>'; ou encore var test3 = "J'aime pas quand ma grand mère me dit : " + '"Vas au lit !"'; au lieu de var test3 = 'J\'aime pas quand ma grand mère me dit : "Vas au lit !"'; |
||
this.getAnswer() | ||
} | ||
}, | ||
methods: { | ||
// _.debounce is a function provided by lodash to limit how | ||
// often a particularly expensive operation can be run. | ||
// In this case, we want to limit how often we access | ||
// yesno.wtf/api, waiting until the user has completely | ||
// finished typing before making the ajax request. To learn | ||
// more about the _.debounce function (and its cousin | ||
// _.throttle), visit: https://lodash.com/docs#debounce | ||
// _.debounce est une fonction fournie par lodash pour limiter la fréquence | ||
// d'exécution d'une opération particulièrement coûteuse. | ||
// Dans ce cas, nous voulons limiter la fréquence d'accès à | ||
// yesno.wtf/api, en attendant que l'utilisateur ait complètement | ||
// fini de taper avant de faire la requête ajax. Pour en savoir | ||
// plus sur la fonction _.debounce (et sa cousine | ||
// _.throttle), visitez : https://lodash.com/docs#debounce | ||
getAnswer: _.debounce( | ||
function () { | ||
if (this.question.indexOf('?') === -1) { | ||
this.answer = 'Questions usually contain a question mark. ;-)' | ||
this.answer = 'Les questions contiennent généralement un point d\'interrogation. ;-)' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Je mettrais
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. idem que au-dessus |
||
return | ||
} | ||
this.answer = 'Thinking...' | ||
this.answer = 'Je réfléchis...' | ||
var vm = this | ||
axios.get('https://yesno.wtf/api') | ||
.then(function (response) { | ||
vm.answer = _.capitalize(response.data.answer) | ||
}) | ||
.catch(function (error) { | ||
vm.answer = 'Error! Could not reach the API. ' + error | ||
vm.answer = 'Erreur ! Impossible d\'accéder à l\'API.' + error | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Je mettrais
|
||
}) | ||
}, | ||
// This is the number of milliseconds we wait for the | ||
|
@@ -256,7 +256,7 @@ Result: | |
{% raw %} | ||
<div id="watch-example" class="demo"> | ||
<p> | ||
Ask a yes/no question: | ||
Posez votre question (réponse par Oui ou Non) : | ||
<input v-model="question"> | ||
</p> | ||
<p>{{ answer }}</p> | ||
|
@@ -268,11 +268,11 @@ var watchExampleVM = new Vue({ | |
el: '#watch-example', | ||
data: { | ||
question: '', | ||
answer: 'I cannot give you an answer until you ask a question!' | ||
answer: 'Je ne peux pas vous donner une réponse avant que vous ne posiez une question !' | ||
}, | ||
watch: { | ||
question: function (newQuestion) { | ||
this.answer = 'Waiting for you to stop typing...' | ||
this.answer = 'J\'attends que vous arrêtiez de taper ...' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
this.getAnswer() | ||
} | ||
}, | ||
|
@@ -281,16 +281,16 @@ var watchExampleVM = new Vue({ | |
function () { | ||
var vm = this | ||
if (this.question.indexOf('?') === -1) { | ||
vm.answer = 'Questions usually contain a question mark. ;-)' | ||
vm.answer = 'Les questions contiennent généralement un point d\'interrogation. ;-)' | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
|
||
return | ||
} | ||
vm.answer = 'Thinking...' | ||
vm.answer = 'Je réfléchis...' | ||
axios.get('https://yesno.wtf/api') | ||
.then(function (response) { | ||
vm.answer = _.capitalize(response.data.answer) | ||
}) | ||
.catch(function (error) { | ||
vm.answer = 'Error! Could not reach the API. ' + error | ||
vm.answer = 'Erreur ! Impossible d\'accéder à l\'API.' + error | ||
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. "'Erreur ! Impossible d'accéder à l'API." + error There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. on est pas censé changé le codestyle même quand ça nous arrange pour la langue There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Pour moi il y a changement de « codestyle » ici : var var1 = "test",
var2 = "test2",
var3 = "test3"; var var1 = "test";
var var2 = "test2";
var var3 = "test3"; Cependant dans le cas du remplacement de « " » par « ' » il n'y a pas de changement de « codestyle » (http://stackoverflow.com/a/242833/2412797), juste l'utilisation d'une fonctionnalité qui est là pour ça. Il serait abérant d'écrire : var test = '<p>' +
'Ceci est un test.<br/>' +
'J\'aime les tests.' +
'</p>'; au lieu de var test = `<p>
Ceci est un test. <br/>
J'aime les tests.
</p>`; prétextant un « codestyle » (prétextant le non support de ES6, Oui). Ceci serait pareil pour :
L'important pour moi dans ce contexte est la lisibilité du code et la capacité dans copier-coller des parts de contenus sans devoir le retravailler. Elle ne peut pas être atteinte en conservant « ' » avec une phrase contenant une apostrophe. Par exemple : si on voulais un code parfait on ne mettrait pas : vm.answer = 'Erreur ! Impossible d\'accéder à l\'API.' + error mais vm.answer = i18n.error.notReached + error; mais pour une question de lisibilité et de compréhension, on décide de marquer textuellement et de piéger le texte dans notre exemple. Pourquoi alors ne pas suivre cette philosophie de simplification pour la bonne compréhension jusqu'au bout ? Je laisse d'autres avis s'en mêler ! PS : Et quand bien même on ne serait pas d'accord sur ce qui est ou n'est pas du « codestyle » de la même manière que l'on défini que « dans le cas ou un template s'étale sur plusieurs ligne on utilise « ` », dans le cas ou l'apostrophe est un caractère de la phrase, on utilise « " ». There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Je reste en attente d'une décision sur ce sujet ! Je ferais selon vos décisions There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. 2 contre 1 pour le moment, ça s'annonce mal pour moi ! :D There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Ce n'est pas à nous de définir ce qui est ou pas du code style, cette décision ne nous appartient pas. Pour rappel, l'équipe de Vue utilise ESLint et a des règles de codestyle bien établies qui doivent être respectées pour toute la doc de Vue peu importe la langue. Voir la configuration ESLint: https://github.com/vuejs/eslint-config-vue/blob/master/index.js Cette conf indique explicitement que les single quotes doivent être utilisées, mais un flag a été ajouté pour tolérer le changement de quotes si cela permet d'éviter un échappement. Donc le passage aux double quotes est tolérable ici, mais @forresst a eu le bon réflexe de coller au plus proche du code style d'origine. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Je maintiens que 'quotes': [2, 'single', { 'avoidEscape': true, 'allowTemplateLiterals': true }], Cependant c'est @forresst qui à le dernier mot ! (Advice Process Oblige !). On garde les There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. Euh je voulais pas créer une polémique. Je suis pour la paix des ménages 😄 Si c'est moi qui doit décider donc allons pour le respect de eslint de vue. Je ferai les modifications pour appliquer par défaut la simple quote sauf dans le cas d'échappement. There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more.
Franchement si ça peut éviter ce genre de truc pas lisible et que c'est toléré par le codestyle, on peut s'autoriser les double quotes quand il y a un mot sur deux avec une apostrophe (un probleme bien plus rare en anglais), à moins d'avoir un petit fond maso :-p There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. C'est ce que j'ai fait dans mon dernier commit |
||
}) | ||
}, | ||
500 | ||
|
@@ -300,6 +300,6 @@ var watchExampleVM = new Vue({ | |
</script> | ||
{% endraw %} | ||
|
||
In this case, using the `watch` option allows us to perform an asynchronous operation (accessing an API), limit how often we perform that operation, and set intermediary states until we get a final answer. None of that would be possible with a computed property. | ||
Dans ce cas, l'utilisation de l'option `watch` nous permet d'effectuer une opération asynchrone (accéder à une API), de limiter la fréquence d'exécution de cette opération et de définir des états intermédiaires jusqu'à ce que nous obtenions une réponse finale. Rien de tout cela ne serait possible avec une propriété calculée. | ||
|
||
In addition to the `watch` option, you can also use the imperative [vm.$watch API](../api/#vm-watch). | ||
En plus de l'option `watch`, vous pouvez aussi utiliser [l'API vm.$watch](../api/#vm-watch). |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
destinées à