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
[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
11
10
compréhensible par les autres développeurs.
12
11
13
12
Mais Backbone comme jQuery,
@@ -19,9 +18,9 @@ C'est pour cette raison que j'écris cette article. Suite à l'analyse de Docume
19
18
20
19
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.
21
20
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/)).
23
22
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.
25
24
26
25
### Structuration des fichiers
27
26
@@ -47,20 +46,20 @@ Je me détache des présentations du type [How to build large scale jQuery appli
47
46
48
47
### Index.html
49
48
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.
51
50
52
51
Une SPA signifie qu'il n'y a qu'un seul fichier HTML à charger pour gérer l'ensemble de l'application.
53
52
54
53
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.
55
54
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 :
<!-- scripts concatenated and minified via build script -->
63
-
<scriptsrc="js/vendor/undercsore.js"></script>
62
+
<scriptsrc="js/vendor/underscore.js"></script>
64
63
<scriptsrc="js/vendor/backbone.js"></script>
65
64
<scriptsrc="js/application.js"></script>
66
65
<!-- all your scripts here -->
@@ -73,9 +72,9 @@ Si vous voulez un exemple d'index.html prenez celui de HTML5Boilerplate.
73
72
74
73
Comme notre index.html est tout vide, il nous faudra gérer nos templates dans des fichiers séparés.
75
74
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)
77
76
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.
79
78
80
79
Je m'explique. Prenons un template `hello-world.jst`
81
80
@@ -99,10 +98,10 @@ $(function(){
99
98
})
100
99
{% endhighlight %}
101
100
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.
104
103
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 :)
106
105
107
106
Sinon regarder les projets ci dessous :
108
107
@@ -114,10 +113,10 @@ Sinon regarder les projets ci dessous :
114
113
115
114
### Utilisation d'un Namespace
116
115
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`
118
117
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.
121
120
122
121
application.js :
123
122
@@ -132,8 +131,7 @@ application.js :
132
131
{% endhighlight %}
133
132
134
133
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:
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 :
165
163
166
164
{% highlight javascript %}
167
165
// Before
@@ -170,7 +168,7 @@ Donc pas besoin d'enrober notre code dans un fonction auto appelante :
170
168
})()
171
169
{% endhighlight %}
172
170
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.
174
172
175
173
$ console.log(new dc.model.Document());
176
174
@@ -187,16 +185,18 @@ Dans le cas de notre application, il y a 2 sortes de dépendances :
187
185
188
186
* à la lecture du fichier, les variables doivent être connu par l'interpréteur JavaScript.
189
187
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.
191
189
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.
193
191
194
192
195
193
* lors de l'instantiation, si l'on fait appel à un module externe, celui ci doit avoir été instancié préalablement.
196
194
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
+
197
197
#### Dépendances partagées globalement
198
198
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.
0 commit comments