Où jQuery s'intègre-t-il avec des frameworks comme JavaScriptMVC, BackboneJS, SproutCore et Knockout?


14

J'utilise heureusement JQuery depuis 2 ans et j'ai réussi à créer des fonctionnalités vraiment cool avec lui ... donc je suis très à l'aise avec. Je crois également que l'avenir du Web se poursuivra sur le chemin actuel côté client.

Pourtant...

Le prochain défi semble venir sous la forme de divers cadres de contrôleur: KnockoutJS , BackboneJS , SproutCore , JavaScriptMVC (la liste continue).

Additonally, il y a quelques grands AMD Loader outils à utiliser comme RequireJS ou LabJS etc. Cependant, jQuery a maintenant defineet thencapacités au four-in.

Il devient de plus en plus difficile de garder une trace de tout cela ...

Et maintenant, ma tâche semble être d'évaluer / décider d'une direction stratégique pour l'utilisation d'une forme de MVC ou de MVVM côté client ... mais j'ai tellement de questions.

  • JQuery s'intègre-t-il avec les différents cadres de contrôleur mentionnés ci-dessus?
  • Est-ce que JQuery est utilisé à côté de chacun ou certains d'entre eux ont-ils leur propre " version stylée JQuery " intégrée?
  • Des outils comme RequireJS sont-ils toujours nécessaires si vous implémentez l'un des différents frameworks de contrôleur mentionnés ci-dessus?
  • Les fonctionnalités defineet les thenfonctionnalités intégrées à JQuery remplacent-elles désormais le chargeur AMD mentionné ci-dessus?
  • Lequel semble le plus modulaire? (voir notes ci-dessous)

REMARQUES:
Une chose que je ne veux dans aucun futur framework est l'exigence d'avoir à intégrer de grandes quantités de fonctionnalités que je n'utilise pas. Cela signifie que je préfère utiliser un cadre vraiment modulaire. Par exemple, pour utiliser l'interface utilisateur jQuery, vous devez intégrer de nombreuses autres bibliothèques de base que vous pourriez ne pas utiliser réellement.

J'expérimenterai avec chacun, mais de VRAIS commentaires seraient formidables. J'ai vu des questions «similaires», mais aucune n'a vraiment répondu au biais ci-dessus.

Merci d'avance!

Réponses:


11

jQuery un outil de normalisation multi-navigateur. Il vous donne les éléments suivants

  • Utilitaires DOM
  • Système d'événement
  • Ajax
  • Des animations
  • Utilitaires ES5
  • quelque autre chose

Backbone / knockout / yada / yada sont des bibliothèques de type MVC qui sont là pour vous aider à structurer et à écrire une application modulaire. Vous n'en avez besoin que si vous voulez leur structure.

RequireJS / yada / yada sont des chargeurs de modules. Vous avez besoin d'une certaine forme de chargeur de module si vous voulez écrire une application modulaire.

Où JQuery s'intègre-t-il avec les différents cadres de contrôleur mentionnés ci-dessus?

Comme mentionné, jQuery normalise les navigateurs. les cadres de contrôleur ne le font pas. Vous n'avez pas besoin de jQuery mais vous avez besoin d'un moyen de normaliser les navigateurs.

JQuery est-il utilisé à côté de chacun ou certains d'entre eux ont-ils leur propre «version de style JQuery» intégrée?

Backbone / knockout / JavaScriptMVC n'ont pas de normalisation de navigateur intégrée, vous avez donc besoin d'un outil pour cela. Je ne suis pas sûr que SproutCore semble contenir beaucoup de choses.

Des outils comme RequireJS sont-ils toujours nécessaires si vous implémentez l'un des divers cadres de contrôleur mentionnés ci-dessus?

Celles-ci ne sont nécessaires que si vous écrivez pour écrire des applications modulaires. Donc à peu près oui.

Il existe trois types d'applications modulaires

  • async nécessite des chargeurs comme requireJS
  • la synchronisation nécessite des chargeurs comme modul8
  • en utilisant des espaces de noms et en incluant simplement des fichiers
  • des packages comme ender

Les capacités de définition, puis intégrées à JQuery remplacent-elles désormais le chargeur AMD mentionné ci-dessus?

Non. La capacité de définition intégrée à jQuery vous permet de l'utiliser avec un chargeur AMD sans encapsuler jQuery. Vous avez toujours besoin d'un chargeur AMD. La capacité "alors" n'est qu'un peu de sucre de jQuery différés.

Lequel semble le plus modulaire? (voir notes ci-dessous)

Voilà une question d'opinion. Mon opinion personnelle est que tous ces cadres, y compris jQuery, sont gonflés et non modulaires.

Vous voulez modulaire, écrivez votre propre bibliothèque, écrivez votre propre architecture.

Cependant, si vous voulez le moindre des maux, je choisirais l'épine dorsale car c'est simple et petit ou la colonne vertébrale qui est similaire


Merci Raynos ... Je peux toujours compter sur vous pour une excellente réponse!
Prisonnier ZERO

@Marjan J'attends tous les autres qui pourraient également vouloir soumettre leurs commentaires.
Prisonnier ZERO

@PrisonerZERO: aucun problème avec ça. Comme vous sembliez satisfait de la réponse de Raynos, mon commentaire était juste au cas où vous ne seriez pas au courant d'accepter une réponse (je n'ai pas vérifié votre profil et votre représentant suggère que vous êtes un utilisateur assez nouveau ici)
Marjan Venema

2

Je répondrai sur JavaScriptMVC car je suis un contributeur:

Où JQuery s'intègre-t-il avec les différents cadres de contrôleur mentionnés ci-dessus?

JavaScriptMVC dépend de jQuery et l'utilise largement.

JQuery est-il utilisé à côté de chacun ou certains d'entre eux ont-ils leur propre «version de style JQuery» intégrée?

JavaScriptMVC n'a aucune fonctionnalité concurrente avec jQuery. Ce n'est pas aussi vrai avec Backbone qui a son propre système d'événements. Mais tout ce que la colonne vertébrale ou la colonne vertébrale ajoutent est très minime.

Des outils comme RequireJS sont-ils toujours nécessaires si vous implémentez l'un des divers cadres de contrôleur mentionnés ci-dessus?

JavaScriptMVC est livré avec un système de gestion des dépendances -> steal. Vous pouvez utiliser JavaScriptMVC avec RequireJS, mais le vol est en réalité beaucoup plus puissant et à peu près de même taille téléchargé par un utilisateur.

Lequel semble le plus modulaire? (voir notes ci-dessous)

Ce n'est pas opiniâtre. JavaScriptMVC est extrêmement modulaire. Vous n'utilisez que ce dont vous avez besoin. Comparé au Backbone ou à la colonne vertébrale, vous pouvez utiliser ses pièces M, V ou C de manière autonome. Une fois assemblé, il n'est que 1k plus grand que Backbone (lors de l'utilisation de jQuery et Underscore). Vous pouvez voir les différentes tailles des composants de base ici: https://github.com/jupiterjs/javascriptmvc/issues/26

Mais JavaScriptMVC est beaucoup plus puissant (en termes de fonctionnalités) que Backbone ou Spine. Par exemple, ses gestionnaires d'événements basés sur des modèles empêchent pratiquement toutes les fuites de mémoire. Voici une info-bulle qui se cache lorsque vous cliquez sur la fenêtre:

$.Controller('Tooltip',{
  "{window} click" : function(){
    this.element.remove();
  }
})

Ceci est absolument essentiel avec l'approche MVC lorsque vos contrôles écoutent les changements dans le modèle comme:

$.Controller('Todos',{
  "{Todo} created" : function(Todo, ev, createdTodo){

  }
})

Le contrôleur déliera automatiquement tous ces gestionnaires d'événements externes.

Quelques autres points forts des pièces MVC:

  • $ .Class est un système de classe très puissant
  • $ .View et $ .Model prend en charge les reports
  • $ .Controller peut «relier» les gestionnaires d'événements
  • $ .Model prend en charge les associations, les getter / setters, les valeurs par défaut, les validations

Maintenant, JavaScriptMVC est bien plus que ses parties MVC (qui font partie du sous-projet jQueryMX). Il a:

  • jQueryMX - les fonctionnalités manquantes de jQuery comme les événements spéciaux, les aides dom, etc.
  • Steal - un système de gestion des dépendances. Mais il peut faire des choses comme prendre une application ajax et la rendre explorable sur Google.
  • FuncUnit - Un framework de test incroyablement puissant.

Maintenant, de quoi utiliser, beaucoup dépend. Cela dépend beaucoup si vous créez une "application" ou une "page". Une application, qui a besoin de tests, de gestion des dépendances, où vous vous souciez des fuites de mémoire, je regarderais JMVC ou SproutCore.

Si vous collez quelques widgets de base ensemble, je regarderais la colonne vertébrale ou l'épine dorsale.


"Épine dorsale ou colonne vertébrale, vous pouvez utiliser ses pièces M, V ou C de manière autonome." Sauf que chacun des M, V et C est tout aussi gros que la colonne vertébrale et la colonne vertébrale.
Raynos

Ce n'est pas vrai. L'épine dorsale est de 5k avec sa dépendance de soulignement. Je ne sais pas ce qu'est la colonne vertébrale. Mais voici la répartition: Classe: 1k, Contrôleur: 1,74k, Modèle: 2,8k, $ .View: 1,6k, $ .String: .5k. Pour un total combiné de 8,6k. C'est 3k de plus, mais des fonctionnalités beaucoup plus utiles.
Justin Meyer

Souhaitez-vous utiliser JavaScriptMVC avec quelque chose comme les contrôles de l'interface utilisateur de Kendo? Quels autres contrôles?
Prisonnier ZERO

Oui, toute bibliothèque d'interface utilisateur basée sur jQuery devrait fonctionner très bien (tant qu'elle utilise le système d'événements de jQuery pour les événements).
Justin Meyer

Je dois noter que Backbone peut utiliser Zepato au lieu de jQuery, ce qui le rend beaucoup moins que les dépendances combinées JMVC MVC avec jQuery. Mais, vous perdez un peu sans jQuery.
Justin Meyer
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.