81 votes

Backbone.js et jQuery

Il est dit que la Dorsale s'occupe de toutes les abstractions de niveaux supérieurs, alors que jQuery ou similaire bibliothèques de travail avec le DOM, normaliser les événements et ainsi de suite..

Quelqu'un pourrait-il svp m'aider à comprendre cette déclaration avec une simple exemple pratique.

Également une caractéristique importante de la MVC framework comme épine Dorsale, knock-out, c'est qu'il permet de conserver le modèle (les données) et le point de vue de la synchronisation. Mais ce qui semble être spécifique au niveau de la page et non pas l'ensemble de l'application. Donc, peut-on le modèle/données et l'affichage synchronisé sur plusieurs pages..(genre de)

128voto

Josh Earl Points 6462

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.

54voto

OlliM Points 1450

Backbone / knock-out est généralement utilisé pour les single page applications. Ainsi, alors que jQuery est une boîte à outils qui peut être utilisé avec n'importe quelle page web, de la colonne vertébrale est destiné à un type spécifique d'application et vous aide à organiser votre code pour qu'il. Au moins dans mon expérience, l'un des plus grands défis dans la construction d'une seule page de l'app est de garder le code propre et modulaire, et de la colonne vertébrale aide beaucoup avec cela.

Les caractéristiques typiques d'une épine dorsale application sont:

  • Essentiellement statique de la page html, rien généré sur le serveur
  • Le serveur agit comme un json api REST, qui fournit le contenu des app
  • Les éléments du dom pour afficher les données sont créés avec du javascript de la colonne vertébrale points de vue, à l'aide de jQuery et de diverses bibliothèques de templates pour aider
  • La Communication avec le serveur ainsi qu'entre les différentes parties de l'application se fait à travers l'épine dorsale des modèles

Concernant votre question sur le fait de garder les données synchronisées sur plusieurs pages, mon instinctive réponse est que vous n'avez pas besoin de plusieurs pages: l'utilisateur peut percevoir que la page est en train de changer, l'adresse dans la barre d'url changements grâce à pushState de fonctionnalités, mais techniquement l'ensemble de l'application est d'une page.

Le plus grand avantages de ce type d'approche en douceur de l'expérience utilisateur (pas de rechargement de pages), bien mise en cache de soutien comme tout, sauf les données json est contenu statique, pour les cibles mobiles la possibilité de tourner l'application web dans une application mobile avec phoneGap (parce que tout à l'exception de json est statique).

3voto

Mark Points 6272

Je n'ai jamais entendu parler de gens à l'aide de backbone.js sur plusieurs pages. C'est presque toujours une sorte de single page app.

La seule page peut avoir de nombreux modèles différents, des vues et des états, et peut entraîner une pleine soufflé, application puissante.

Si vous avez déjà côté serveur modèle/vue rendu en java, alors backbone.js n'est PAS pour vous. Pour obtenir les la plupart hors de backbone.js vous devez déplacer ou dupliquer une partie de ce code dans le front-end javascript.

Si vous ne voulez pas faire une seule page de l'app (ce qui signifie simplement une application sans page mises à jour ou des changements, mais l'url peut encore changer et peuvent ressembler à multi-pages pour l'utilisateur), alors vous pouvez garder tous vos MVC sur le serveur et vous n'avez pas besoin pour la colonne vertébrale.

Edit:

Ce squelette n'est de déplacer une partie de la MVC trucs normalement pris en charge sur le serveur et de les déplacer vers le client. Pour beaucoup de gens, cela signifie l'oubli sur le serveur et juste écrire votre application en tant que single page application javascript. Le serveur devient une source de JSON/REST de données. Si vous n'êtes pas prêt à le faire, alors backbone.js n'est pas très utile.

2voto

AntoJs Points 5214

Je suggère de voir cette vidéo. Un simple parcourent de comment les données sont gérées par JS de la colonne vertébrale, pour ceux qui démarrent et ne peut pas envelopper la tête autour de lui.

Colonne vertébrale JS Introduction - visualisée

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X