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
Copy file name to clipboardExpand all lines: _posts/2012-02-25-backbone-tips-from-document-cloud.markdown
+32-15Lines changed: 32 additions & 15 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -326,13 +326,16 @@ dc.app.editor = new Backbone.View.extend({
326
326
},
327
327
{% endhighlight %}
328
328
329
-
Regardez également comment le module parent partage son instance avec ses enfants : `new dc.ui.ReplacePagesEditor({editor : this})`.
329
+
Regardez également comment le module parent partage son instance avec
330
+
ses enfants : `new dc.ui.ReplacePagesEditor({editor : this})`.
330
331
C'est ainsi que les enfants peuvent discuter avec le module parent, ou discuter avec les autres enfants.
331
332
332
333
333
334
#### Remarque sur RequireJS
334
335
335
-
Si pendant la lecture de ce paragraphe vous vous dites que vous n'avez pas besoin de tout ça car vous avez RequireJs. Sachez que lorsque vous définissez un module avec RequireJs, vous avez le choix entre retourner une classe, ou un singleton, mais faire les deux devient problématique. Vous aurez donc solutionné un problème, mais pas les deux.
336
+
Si pendant la lecture de ce paragraphe vous vous dites que vous n'avez pas besoin de tout ça car vous avez RequireJs.
337
+
Sachez que lorsque vous définissez un module avec RequireJs, vous avez le choix entre retourner une classe,
338
+
ou un singleton, mais faire les deux devient problématique. Vous aurez donc solutionné un problème, mais pas les deux.
Je vous entends crier au loin, mais c'est fortement coupler ça !!!
385
388
386
-
Comme il n'y a pas de typage fort en javascript vous vous en moquez! C'est comme si vous utilisiez des interfaces en Java. Si vous voulez remplacer un module par un autre, il suffit que les deux modules possèdent les mêmes signatures de fonctions et vous pouvez les remplacer.
389
+
Comme il n'y a pas de typage fort en javascript vous vous en moquez! C'est comme si vous utilisiez des interfaces
390
+
en Java. Si vous voulez remplacer un module par un autre, il suffit que les deux modules possèdent les mêmes signatures
391
+
de fonctions et vous pouvez les remplacer.
387
392
388
-
Maintenant si vous voulez savoir quelles sont les fonctions publiques et les fonctions privées, je vous déconseille de les préfixer par un undercsore. Déjà, c'est moche et en plus c'est inutile car un simple grep suffit pour savoir quelles sont les méthodes publiques :
393
+
Maintenant si vous voulez savoir quelles sont les fonctions publiques et les fonctions privées, je vous déconseille
394
+
de les préfixer par un undercsore. Déjà, c'est moche et en plus c'est inutile car un simple grep suffit pour savoir
Après vous pouvez communiquer via des événements, mais il faudra un peu plus de travail pour synchroniser plusieurs événements. De plus, les appels seront moins facile à repérer dans le code.
403
+
Après vous pouvez communiquer via des événements, mais il faudra un peu plus de travail pour synchroniser plusieurs
404
+
événements. De plus, les appels seront moins facile à repérer dans le code.
397
405
398
406
Le problème avec les événements en JS, c'est que l'on perd vite le contrôle de l'application et tout parait magique.
Une des choses les plus belles avec Backbone c'est l'attribut `this.el`, et les nombreuses utilisations : `this.$el`, `this.$`, ... Utiliser `el` vous permet de limiter l'interaction qui vous aurez avec le DOM. Non seulement vous gagnez en performance (les sélecteurs jQuery sont précis) mais en plus cela vous empêche de modifier des éléments qui n'appartiennent pas à votre vue.
462
+
Une des choses les plus belles avec Backbone c'est l'attribut `this.el`, et les nombreuses
463
+
utilisations : `this.$el`, `this.$`, ... Utiliser `el` vous permet de limiter l'interaction qui vous aurez
464
+
avec le DOM. Non seulement vous gagnez en performance (les sélecteurs jQuery sont précis) mais en plus cela
465
+
vous empêche de modifier des éléments qui n'appartiennent pas à votre vue.
@@ -462,7 +473,8 @@ Alors vous l'aurez compris, je ne veux plus voir de `$` dans vos applications Ba
462
473
463
474
### Des conventions qui rendent la lecture du code tellement plus agréable.
464
475
465
-
Il y a une autre chose que j'aime dans Backbone, ce sont ses conventions. Par exemple dans une vue, on repère instantanément les interactions utilisateurs :
476
+
Il y a une autre chose que j'aime dans Backbone, ce sont ses conventions. Par exemple dans une vue,
477
+
on repère instantanément les interactions utilisateurs :
466
478
467
479
{% highlight javascript %}
468
480
events : {
@@ -475,7 +487,8 @@ events : {
475
487
},
476
488
{% endhighlight %}
477
489
478
-
Mais vous pouvez faire la même chose partout, choisir des conventions et s'y tenir. Par exemple, mettre les constantes et haut et en majuscule :)
490
+
Mais vous pouvez faire la même chose partout, choisir des conventions et s'y tenir. Par exemple, mettre les constantes
@@ -485,8 +498,11 @@ Mais vous pouvez faire la même chose partout, choisir des conventions et s'y te
485
498
486
499
Tout le monde connait les plugins jQuery. Mais saviez vous que vous pouvez faire la même chose avec Backbone?
487
500
488
-
Par exemple, dans DocumentCloud il y a un plugin bien pratique le [setMode](https://github.com/Backbonist/Backbone.setMode).
489
-
SetMode permet de gérer une machine à état au niveau des vues. Lorsque l'on fait un setMode, on ajoute une classe CSS sur le `el` de la vue (pratique pour le CSS) et on ajoute un attribut à l'instance de la vue afin de faciliter les interactions inter-modules.
501
+
Par exemple, dans DocumentCloud il y a un plugin bien pratique,
502
+
le [setMode](https://github.com/Backbonist/Backbone.setMode).
503
+
SetMode permet de gérer une machine à état au niveau des vues. Lorsque l'on appelle setMode, on ajoute une classe CSS
504
+
sur le `el` de la vue (pratique pour le CSS) et on ajoute un attribut à l'instance de la vue afin de faciliter
505
+
les interactions inter-modules.
490
506
491
507
492
508
Je sens que vous ne m'avez pas bien compris, voici un exemple:
Je vous ai déjà dis que vous deviez découper vos vues en sous vues afin de ne travailler que sur des toutes petites portions du DOM. Mais vous pouvez, et devrez faire de même avec les modèles.
591
+
Je vous ai déjà dis que vous deviez découper vos vues en sous vues afin de ne travailler que sur des toutes
592
+
petites portions du DOM. Mais vous pouvez, et devrez faire de même avec les modèles.
576
593
577
594
Lorsque l'on récupère un modèle à partir d'un JSON, on récupère un gros bloc d'un coup qu'il va falloir découper.
0 commit comments