Question

Je Backbone.js l'adoption de rendre un petit coin d'un existant grande application web . Si cela va bien, je peux voir Backbone.js de plus en plus pour englober l'ensemble de l'application, une structure de prêt si nécessaire à une application de culture biologique. C'est la préface. Maintenant le problème:

J'ai une boîte de sélection qui permet à l'utilisateur de sélectionner un plan de lecture. Lorsque la sélection change, la vue met à jour un texte descriptif, une interface de calendrier, et un petit widget pour marquer les lectures d'aujourd'hui comme complète. Le widget aura une case à cocher pour chaque lecture (un ou plusieurs) dans l'entrée d'aujourd'hui et un bouton pour continuer à la lecture du lendemain. (Vous pouvez voir le courant, la version non-Backbone de cette interface (moins le schéma d'achèvement) sur le côté droit de l'application existante .

Quelle est la granularité appropriée pour chaque vue? J'ai identifié les éléments suivants "fiddly" des bits:

  • L'onglet lui-même, qui englobe tous les contrôles contenus.
  • La boîte de sélection
  • Le texte descriptif, qui répond à la boîte de sélection
  • Le calendrier, qui répond à la boîte de sélection
  • Les lectures widget, qui répond à la zone de sélection, et contient:
    • En option, un bouton "Démarrer", qui active le plan actuel.
    • Une fois activée, une ou plusieurs cases correspondant à des lectures individuelles dans l'entrée d'aujourd'hui.
    • Une fois activée, un bouton « Next » qui complète l'entrée d'aujourd'hui et affiche la prochaine.

Si chacun de ces points de balle se sa propre vision? Juste les pièces principales (onglet, boîte de sélection, widget)? La première se traduira par un bon nombre de vues. La première semble que cela pourrait conduire à des implémentations Voir trop compliquées. Ce qui est mieux?

Note: Je sais que cela pourrait être interprété comme une question d'une manière extravagante-subjective, mais je suis toujours envelopper ma tête autour de modèles Backbone.js et Javascript / DOM MVC, et j'espère que il y a une étroite «c'est ce qui fonctionne pour but / mieux » des praticiens de Backbone.js plus expérimentés. Merci!

Était-ce utile?

La solution

Il n'y a pas de réponse définitive à votre question. Vous pouvez jeter un oeil à la granularité de SproutCore pour exemples.

Vous pouvez aussi regarder http://vimeo.com/17186379 où illustrent Yehuda Katz les difficultés de mise à jour différentes pièces de la page.

Une façon de regarder ce serait de vérifier quelle partie devrait être actualisé avec différents changement de modèle / événements et essayer de minimiser la re rendu.

Désolé, pas de bonnes réponses comme vous l'avez;)

Autres conseils

En général, la granularité de votre point de vue dépendra de trouver un équilibre entre la complexité de la pièce particulière de l'interface utilisateur, et une fragmentation excessive des vues en petits morceaux. Je ne serais probablement pas utiliser une vue pour quelque chose d'aussi petit qu'un bouton (une classe CSS est tout ce que vous avez vraiment besoin pour cela).

Dans votre cas, je serais probablement une vue pour le widget calendrier - il peut être facilement réutilisé dans d'autres endroits dans l'application - et une vue de l'ensemble onglet dévotions. Le reste peut être fait par événement de liaison.

En ce qui concerne les mises à jour du modèle et re-rendu, l'idée avec Backbone est de séparer cette préoccupation des points de vue. Les modèles émettent des événements « changement » lorsque leurs attributs changement, et quelles que soient vues se trouvent sur la page à l'époque, et affichent que les données de modèle particulier, seront informés du changement, et peuvent se mettre à jour.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top