Backbone.js est un framework JavaScript sous licence MIT que Jeremy Ashkenas a écrit dans le cadre de son travail chez DocumentCloud. Il permet d’apporter de la structure à des applications JavaScript grâce à une bibliothèque qui ne fait pourtant qu’un millier de lignes de code en tout.
Pour cela, il apporte la séparation du code en classes :
- les modèles et collections sont responsables de la logique métier et peuvent également servir pour la persistance, aussi bien locale avec localStorage que distante via des API RESTful en JSON. Les modèles proposent des enregistrements clé‐valeur et des événements associés. Les collections offrent un catalogue bien pratique de méthodes d’énumération : ce sont les méthodes
map
,reduce
,filter
importées depuisunderscore.js
, une des rares dépendances de Backbone.js ; - les vues font la liaison entre les modèles et le DOM. Elles mettent à jour le code HTML en fonction des modifications des modèles et, dans l’autre sens, peuvent gérer les événements du DOM ;
- le routeur permet de modifier l’URL de la page (le
#fragment
ou, depuis la version 0.5.0, le chemin complet grâce àpushState
) et de retourner à l’état associé quand la page est rechargée. Cela permet d’avoir des URL qui peuvent être mises en favoris ou partagées.
Backbone.js a atteint la version 0.5.0 il y a quelques jours et est déjà utilisé sur des projets notables comme Basecamp Mobile.
Aller plus loin
- Backbone.js (791 clics)
- Annonce de la sortie de Backbone.js 0.5.0 (64 clics)
- Le journal des modifications (45 clics)
- Underscore.js (158 clics)
- Todos, un exemple d’application Backbone.js avec le code commenté (474 clics)
- Une liste de tutoriels et exemples pour débuter (371 clics)
# À comparer avec Sammy.js ?
Posté par Stéphane Klein (site web personnel) . Évalué à 4.
Dernièrement j'ai utilisé avec plaisir la partie routeur de Sammy.js (http://sammyjs.org/). Je vais peut être tester prochainement Backbone.js.
Est-ce qu'il y a des personnes qui ont comparées la partie routeur de Sammy.js avec celle de Backbone.js ?
# Seulement 1000 lignes de code
Posté par dinomasque . Évalué à 4.
"seulement" ?
Le web a bien changé.
BeOS le faisait il y a 20 ans !
[^] # Re: Seulement 1000 lignes de code
Posté par CrEv (site web personnel) . Évalué à 7.
oui, ça a bien changé...
Quel est la taille d'une "application" web aujourd'hui (si on ne compte que le js, pas les serveurs) ? 10 000 loc ? 20 000 ? (la dernière grosse sur laquelle je code fait dans les 60 000 loc hors libs).
Donc je suis plutôt d'accord avec le seulement 1000 lignes.
[^] # Re: Seulement 1000 lignes de code
Posté par Bruno Michel (site web personnel) . Évalué à 6. Dernière modification le 04 juillet 2011 à 12:58.
En comparaison, jquery, c'est plutôt dans les 10 000 lignes de code. Et je ne parle même de frameworks plus lourds comme YUI ou ExtJS.
[^] # Re: Seulement 1000 lignes de code
Posté par DontShootMe . Évalué à 1.
Oui c'est vrai mais dans ce cas là ne faudrait il pas comparer 'YUI-core' et 'Ext-core' car les 10 000 lignes de code savent faire le café et les croissants chauds !
# Persistence
Posté par __o . Évalué à 2.
Ça a l'air pas mal du tout, mais comment ça se passe lorsqu'on veut persister les données sur un serveur ? Est-ce qu'on ne risque pas d'avoir à implémenter deux fois le modèle ? (sur le serveur et le client)
[^] # Re: Persistence
Posté par Johann Ollivier-Lapeyre (site web personnel) . Évalué à 1.
Si, mais ce n'est pas forcement un problème.
Confronté à un cas comme cela, j'ai scripté cela, et les modèles JS sont générés automatiquement à partir du modèle serveur. Via introspection sur les objets (propriétés et relation), cela se fait facilement. En gros, j'ai codé cela en 4h tests compris.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.