Votre phrase d'ouverture était en fait un très bon exposé sur les différences entre Backbone.js et jQuery, nous allons décompresser un peu.
Pour une chose, les deux bibliothèques ne sont pas en concurrence, ils sont gratuits.
Comme exemple, voici certaines choses que je voudrais faire avec jQuery:
- Des diaporamas animés
- Contrôle de formulaire améliorations, comme un iOS-numéro de style "spinner"
- Le basculement de la visibilité des éléments basés sur un nom de classe
Et certaines choses que je puisse faire en Backbone.js:
- Créer un album photo, où l'utilisateur clique sur une vignette et peut afficher une version agrandie de la photo, ainsi que certaines données comme la caméra qui a été utilisé, l'emplacement et le nom du photographe
- Construire un maître/détails type de page qui présente une grille de données et permet à l'utilisateur de cliquer sur les différents éléments et les mettre à jour dans un formulaire.
jQuery excelle au niveau micro--la sélection des éléments de la page, pour aplanir les différences dans la manière dont les navigateurs gérer les événements.
Backbone.js est plus grande image. Il vous aide à gérer les données et la logique de l'application. Dans l'album photo de l'exemple ci-dessus, de la colonne vertébrale fournit plusieurs structures utiles: vous auriez quelque chose pour contenir toutes les données liées aux photos (un modèle), une liste de toutes les photos dans l'album (une collection), et de les mettre quelque part logique qui détermine ce qui se passe lorsqu'un utilisateur clique sur une vignette (la vue). Ceux sont les pièces principales dans une base de contrôle ou de l'application.
Backbone.js les avantages de jQuery, bien que, ou quelque chose comme ça, pour aider à rendre les résultats les données de votre application et de la logique dans les DOM. Il est courant, par exemple, pour utiliser jQuery pour sélectionner l'élément sur la page, qui va servir de conteneur pour votre épine Dorsale de l'app. Il est également fréquent que l'utilisation de jQuery $(function () {});
de le feu les morceaux de votre épine Dorsale de contrôle. Vous auriez probablement afficher le formulaire de validation sur le terrain des messages d'erreur avec jQuery.
Vous pouvez certainement construire un grand complexe d'interfaces utilisateur en jQuery. Nous avons un peu dans l'application j'maintenir au travail. Mais ils sont difficiles à travailler avec parce que jQuery n'est pas conçu pour fournir la structure d'une application. En particulier, jQuery API, qui est basé autour de la sélection des groupes d'éléments et de passer des fonctions de rappel qui manipulent ces éléments, il n'est pas un bon modèle à utiliser dans un grand complexe de contrôle ou de l'application. Vous vous retrouvez avec beaucoup de fonctions imbriquées et il est très difficile de voir ce qu'il se passe.
Je suis en train de retravailler un de ces contrôles dans Backbone.js. Comme dernier exemple, voici un rapide résumé de la façon dont mon processus de pensée diffère lorsque l'on travaille sur le même contrôle dans les deux bibliothèques différentes.
En jQuery, je suis inquiet à propos de:
- Suis-je à l'aide de la droite du sélecteur de saisir le groupe de
li
les éléments que je veux?
- Ai-je besoin de repeupler cette liste de valeurs lors de cet appel Ajax est terminée?
- Comment puis-je mettre ces valeurs de tableau arrière dans l'
input
des éléments sur la page?
De la colonne vertébrale, je suis plus porté sur:
- Quelle est la bonne logique pour valider cet ensemble de propriétés sur mon modèle?
- Lorsque l'utilisateur clique sur le bouton Ajouter, devrais-je ajouter un nouvel élément à la collection immédiatement, ou dois-je attendre jusqu'à ce qu'ils ont rempli toutes les données et c'est "valide"?
- Comment devrait-un élément dans ma collection de répondre lorsque l'élément immédiatement avant ou après, il est supprimé?
jQuery gère les moindres détails, et de la colonne vertébrale est de plus haut niveau.
Pour terminer, notez que j'ai été en utilisant les mots "contrôle" et "application" lors de l'examen Backbone.js des exemples. Ce n'est pas vrai que Backbone.js c'est juste pour single page apps. Il est vrai, cependant, que Backbone.js est bon pour construire des applications complexes qui manipulent les données et de gérer beaucoup de logique. Il serait idiot de l'utiliser pour les petits éléments de l'INTERFACE utilisateur--la structure supplémentaire qu'elle impose n'est pas nécessaire.
Mise à jour: Sur la question de plusieurs pages, oui, la charpente ne fournissent un mécanisme puissant pour la persistance de vos données. Chaque modèle a un save
méthode qui vous permettra d'exécuter un appel AJAX pour stocker les modifications sur le serveur. Donc, tant que vous sauvegardez vos données comme vous allez, vous pouvez avoir un multi-page app. C'est un modèle flexible, et c'est la façon dont nous allons probablement jusqu'à la fin à l'aide de la Dorsale au travail. Bien que j'aimerais construire une page unique application, nous avons 10 ans de travail dans notre multi-page de l'application. Nous sommes à la recherche de reconstruire certains de nos plus intense composants de l'INTERFACE utilisateur de la colonne vertébrale, puis de synchroniser les modifications sur le serveur avant que l'utilisateur se déplace vers une autre page.