Skip to content

Commit c0a577f

Browse files
committed
Update _posts/2012-02-25-backbone-tips-from-document-cloud.md
1 parent 43a7db7 commit c0a577f

File tree

1 file changed

+23
-23
lines changed

1 file changed

+23
-23
lines changed

_posts/2012-02-25-backbone-tips-from-document-cloud.md

Lines changed: 23 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -6,8 +6,7 @@ tags: [backbonejs, javascript, webapp, spa]
66
---
77

88

9-
[Bakbone](http://documentcloud.github.com/backbone/) est un super projet car il embarque en très peu de ligne, un
10-
ensemble de bonne pratiques qui rendra votre code bien plus lisible et
9+
[Bakbone](http://documentcloud.github.com/backbone/) est un projet que j'aime beaucoup car il embarque en très peu de ligne, un ensemble de bonne pratiques qui rendra votre code bien plus lisible et
1110
compréhensible par les autres développeurs.
1211

1312
Mais Backbone comme jQuery,
@@ -19,9 +18,9 @@ C'est pour cette raison que j'écris cette article. Suite à l'analyse de Docume
1918

2019
Dans cet article je parlerais beaucoup de tout ça qui va autour de Backbone, mais finalement très peu du framework en tant que tel. Je vous laisse le soin de lire la [doc officiel](http://documentcloud.github.com/backbone/), ou même le [code commenté](http://documentcloud.github.com/backbone/docs/backbone.html) car celui ci est très claire.
2120

22-
Ce qui m'importe le plus pour structurer un code c'est la simplicité et la facilité de compréhension. Je vais donc vous présenter une approche pragmatique et minimaliste qui vous permettra de mettre en place des projets fronts conséquent (comme celui [DocumentCloud](http://www.documentcloud.org/public/search/)).
21+
Ce qui m'a plu dans le l'utlisation faite de Backbone chez DocumentCloud, c'est la simplicité et la facilité de compréhension du code. Je vais donc vous présenter une approche pragmatique et minimaliste qui vous permettra de mettre en place des projets fronts conséquent (comme celui [ci](http://www.documentcloud.org/public/search/)).
2322

24-
Je me détache des présentations du type [How to build large scale jQuery application](http://addyosmani.com/blog/large-scale-jquery/) qui je trouve bien pensé mais plus complexe à appliquer. Je trouve l'idée d'utiliser RequireJs et un PubSub intéressante, mais au final cela entraine une surcouche de complexité qui n'est pas nécessaire pour toute les applications.
23+
Cet article se détache des présentations du type [How to build large scale jQuery application](http://addyosmani.com/blog/large-scale-jquery/) qui je trouve bien pensé mais plus complexe à appliquer. Je trouve l'idée d'utiliser RequireJs et un PubSub intéressante, mais au final cela entraine une surcouche de complexité qui n'est pas nécessaire pour toute les applications.
2524

2625
### Structuration des fichiers
2726

@@ -47,20 +46,20 @@ Je me détache des présentations du type [How to build large scale jQuery appli
4746

4847
### Index.html
4948

50-
Backbone grâce à son Routeur nous permet de construire des Single Page Web Applications (SPA) très simplement.
49+
Backbone, grâce à son Routeur, nous permet de construire des Single Page Web Applications (SPA) très simplement.
5150

5251
Une SPA signifie qu'il n'y a qu'un seul fichier HTML à charger pour gérer l'ensemble de l'application.
5352

5453
Ce fichier est en général très simple puisque les templates seront injectées dans le DOM en fonction de l'URL de la page.
5554

56-
Si vous voulez un exemple d'index.html prenez celui de HTML5Boilerplate.
55+
Si vous voulez un exemple d'index.html prenez celui de HTML5Boilerplate dont voici la partie script :
5756

5857
{% highlight html %}
5958
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
6059
<script>window.jQuery || document.write('<script src="js/vendor/jquery.js"><\/script>')</script>
6160

6261
<!-- scripts concatenated and minified via build script -->
63-
<script src="js/vendor/undercsore.js"></script>
62+
<script src="js/vendor/underscore.js"></script>
6463
<script src="js/vendor/backbone.js"></script>
6564
<script src="js/application.js"></script>
6665
<!-- all your scripts here -->
@@ -73,9 +72,9 @@ Si vous voulez un exemple d'index.html prenez celui de HTML5Boilerplate.
7372

7473
Comme notre index.html est tout vide, il nous faudra gérer nos templates dans des fichiers séparés.
7574

76-
(J'ouvre une parenthèse, mais je préfère gérer mes templates HTML dans des fichiers séparées plutôt que de les inclure dans des balises script dans l'index.html car je n'aime pas scroller)
75+
(J'ouvre une parenthèse, mais je préfère gérer mes templates HTML dans des fichiers séparés plutôt que de les inclure dans des balises script dans l'index.html car je n'aime pas scroller)
7776

78-
Ce qui nous faut, c'est créer un fichier HTML, qui sera ensuite compilé en fonction une javascript ce qui nous permettra de récupérer le texte dans notre application.
77+
Ce qu'il nous faut, c'est créer un fichier HTML, qui sera ensuite compilé en une fonction javascript, ce qui nous permettra de récupérer le texte dans notre application.
7978

8079
Je m'explique. Prenons un template `hello-world.jst`
8180

@@ -99,10 +98,10 @@ $(function(){
9998
})
10099
{% endhighlight %}
101100

102-
Mantenant vous avez compris le principe des JST. Si ce n'est pas le cas,
103-
lisez cet article là <http://ricostacruz.com/backbone-patterns/#jst_templates>.
101+
Mantenant vous avez compris le principe des JST. Si jamais ce n'est pas le cas,
102+
lisez cet article là <http://ricostacruz.com/backbone-patterns/#jst_templates>, ou les liens ci dessous.
104103

105-
Il existe de nombreuses solutions pour votre application, mais si vous souhaitez quelque chose qui fonctionne avec n'importe quel template (underscore template, jquery-tmpl, handlebars, des strings pures) jetez un oeil à ce projet <https://github.com/Filirom1/universal-jst> #auto-promotion :)
104+
Il existe de nombreuses solutions pour faire du JST dans votre application, mais, si vous souhaitez quelque chose qui fonctionne avec n'importe quel template (underscore template, jquery-tmpl, handlebars, des strings pures) jetez un oeil à ce projet <https://github.com/Filirom1/universal-jst> #auto-promotion :)
106105

107106
Sinon regarder les projets ci dessous :
108107

@@ -114,10 +113,10 @@ Sinon regarder les projets ci dessous :
114113

115114
### Utilisation d'un Namespace
116115

117-
Trouvez un nom court pour votre namespace, qui n'est pas un mot clé réservé. Par exemple, DocumentCloud à choisi d'utiliser ses initiales : `dc`
116+
Trouvez un nom court pour votre namespace qui n'est pas un mot clé réservé. Par exemple, DocumentCloud à choisi d'utiliser ses initiales : `dc`
118117

119-
On définie le namespace au tout début de notre application, afin de
120-
pouvoir l'utiliser n'importe où dans la suite.
118+
On défini le namespace au tout début de notre application, afin de
119+
pouvoir l'utiliser n'importe où par la suite.
121120

122121
application.js :
123122

@@ -132,8 +131,7 @@ application.js :
132131
{% endhighlight %}
133132

134133
Comme nous allons découper notre application en plein de petits fichiers
135-
(je n'aime pas scroller), nous allons augmenter ce namespace à chaque
136-
fois:
134+
(je n'aime pas scroller), nous allons augmenter ce namespace dans chaque fichier:
137135

138136
js/ui/workspace/panel.js:
139137

@@ -160,8 +158,8 @@ dc.model.Document = Backbone.Model.extend({
160158
{% endhighlight %}
161159

162160

163-
En plus comme chacun de nos fichiers est contenu dans un objet, on ne pourrira pas la globale window.
164-
Donc pas besoin d'enrober notre code dans un fonction auto appelante :
161+
En plus comme chacun de nos fichiers est contenu dans un objet, on ne pourrira pas la globale window ;)
162+
Donc nous n'avons pas besoin d'enrober notre code dans un fonction auto appelante :
165163

166164
{% highlight javascript %}
167165
// Before
@@ -170,7 +168,7 @@ Donc pas besoin d'enrober notre code dans un fonction auto appelante :
170168
})()
171169
{% endhighlight %}
172170

173-
Ce que l'on a gagné gratuitement c'est que chacun de nos objets est facilement accessible via la console.
171+
Ce que l'on a gagné gratuitement, c'est que maintenant, chacun de nos objets est facilement accessible via la console.
174172

175173
$ console.log(new dc.model.Document());
176174

@@ -187,16 +185,18 @@ Dans le cas de notre application, il y a 2 sortes de dépendances :
187185

188186
* à la lecture du fichier, les variables doivent être connu par l'interpréteur JavaScript.
189187

190-
Comme nos fichiers commencerons tous par `dc.xxx.xxxx = Backbone.XXXXX.extend({`, il sera facile pour nous de gérer l'ordre dans l'index.html afin qu'il n'a ai pas de problème de dépendances.
188+
Comme nos fichiers commenceront tous par `dc.xxx.xxxx = Backbone.XXXXX.extend({`, il sera facile pour nous de gérer l'ordre dans l'index.html afin qu'il n'ai pas de problème de dépendances.
191189

192-
Les dépendances qui se trouvent à l'intérieur des fonctions (initialize, render...) seront gérées plus tard.
190+
Les dépendances qui se trouvent à l'intérieur des fonctions (initialize, render...) seront résolues plus tard.
193191

194192

195193
* lors de l'instantiation, si l'on fait appel à un module externe, celui ci doit avoir été instancié préalablement.
196194

195+
Je m'explique, nous allons découper notre application en plein de petit fichier. Une fois instantié ces modules vont communiquer entre eux. Mais on peut faire le distinguo, entre les modules qui seront utilisé par toute l'application, et les modules qui seront utilisé que localement.
196+
197197
#### Dépendances partagées globalement
198198

199-
Si on défini un module comme quelque chose pouvant être appelé par n'importe quel autre module dans l'application. Il est important d'instancier ces modules dans un ordre précis (un module peut dépendre d'un autre module), c'est pour cela que l'on instanciera ces modules dans une fichier unique par exemple le routeur.
199+
Si on défini un module comme quelque chose pouvant être appelé par n'importe quel autre module dans l'application. Il est important d'instancier ces modules dans un ordre précis (un module peut dépendre d'un autre module), c'est pour cela que l'on instanciera ces modules dans une fichier unique par exemple le routeur. Ces modules seront accessibles par toute l'application.
200200

201201
{% highlight javascript %}
202202
dc.app.Router = Backbone.Router.extend({

0 commit comments

Comments
 (0)