Existe-t-il un framework JavaScript MVC (micro-)? [fermé]


133

Existe-t-il des frameworks JavaScript MVC (micro-) côté client ?

J'ai un formulaire HTML assez compliqué, et il bénéficierait du modèle MVC.

J'imagine qu'une bonne solution fournirait ce qui suit:

  • Le modèle et la vue mettent à jour le contrôleur lorsque les valeurs changent (modèle d'observateur)
  • Remplir le modèle à partir des données du formulaire lors du chargement de la page
  • Remplir le formulaire à partir du modèle lorsque le modèle change

Ajax, comet, JSONP et tout ce jazz sont vraiment exagérés.


2
Ai-je tort ou est-ce juste une mauvaise idée (ou peut-être un cadre conforme aux mots à la mode) ?.

2
J'ai commencé à travailler sur quelque chose il y a peu de temps parce que j'avais le même sentiment que vous. C'est aussi minimal que possible, AMD et aussi sans opinion que je pourrais l'obtenir. Cela signifie que pas jQuery etc. Je sais que cela a été fermé, mais je pense que cela pourrait être le genre de chose que vous recherchez: github.com/Wolfy87/tarmac - Je n'ai pas fait beaucoup avec elle récemment parce que je pensais serait le seul utilisateur.
Olical


Jetez un œil à TodoMVC , qui compare (presque) tous les frameworks JavaScript disponibles en implémentant une simple application TODO.
koppor le

Réponses:


71

Backbone est un excellent cadre léger. Essayez-le: http://backbonejs.org/


2
Je suis tellement content d'avoir trouvé Backbone.
Aaron Greenlee

Je suis d'accord, un à vérifier définitivement!
Ivanhoe

Comment utiliser Backbone à la manière MVC?
IsmailS

1
@TristanJuricek existe-t-il une alternative gratuite au peepcode?
Matt

Sautez Backbone et allez à droite pour Spine. Il a une implémentation MVC beaucoup plus logique.
Chris Jaynes

33

JavaScriptMVC est une excellente solution. Tout est une approche plugin vous permet de sélectionner uniquement les fonctionnalités dont vous avez besoin. Depuis la version 2.0, il est basé sur jQuery.

L'amélioration progressive de votre site Web est laissée à l'utilisateur car JMVC ne fournit qu'une couche intermédiaire pour le développement - c'est à vous de faire vous-même ce choix de conception.

Cependant, JavaScriptMVC est tout simplement la meilleure bibliothèque JavaScriptMVC à usage général en raison de ses puissants contrôleurs basés sur la délégation d'événements.

La délégation d'événements vous permet d'éviter d'avoir à attacher des gestionnaires d'événements et de créer simplement des règles pour votre page.

Enfin, JMVC est bien plus qu'une architecture MVC. Toutes les parties du cycle de développement sont couvertes par:

  • Générateurs de code
  • Tests intégrés Selenium et Env.js
  • Moteur de documentation
  • Concat + Compression automatique
  • Détection et rapport d'erreurs

1
+1 pour JavascriptMVC - Je l'ai utilisé pour quelques applications maintenant, et c'est plutôt sympa. Ignorez les exemples de génération de code sur le site Web. J'imagine que ceux-ci ne sont là que pour pacifier les fanboys de Rails. :) Commencez avec le modèle d'objet JQueryMX de base et créez un contrôleur.
Chris Jaynes

1
Depuis que j'ai fait ce commentaire, je suis passé à l'utilisation de Require et Spine. En fin de compte, ils sont plus petits, plus élégants et moins «d'entreprise» que JMVC. JMVC a été bien pour notre équipe de développeurs Java de faire l'ajustement à JS, mais cela ne tient tout simplement pas une fois que vous commencez à mieux comprendre JS ...
Chris Jaynes

La partie MVC de JMVC est maintenant can.js
PHearst

21

Spine a une API similaire à Backbone mais elle est beaucoup plus petite. Il présente un héritage prototypique.


2
Il est également écrit en CoffeeScript et utilise le style de classes de CoffeeScript - non pas que ce soit une énorme victoire, mais c'est plutôt sympa.
un nerd payé

1
Je suppose que c'est pourquoi c'est petit que l'épine dorsale? Le code Coffeescript est plus compact ...
Brenden

J'adore Spine. Utilisez-le avec RequireJS pour une pure génialité. Ne laissez pas le fait que c'est CoffeeScript vous effrayer non plus, cela fonctionne bien avec JS normal, aussi ...
Chris Jaynes

Le support du navigateur est IE> = 9 alors vérifiez qu'il correspond au profil de vos visiteurs.
Richard

20

AngularJS fonctionne bien avec jQuery et vous aidera beaucoup avec la structure MVC et la séparation stricte des préoccupations.

Environnement de test complet et injection de dépendances inclus ...

Découvrez-le sur http://angularjs.org


Angularjs est LE meilleur à ce jour à la fin de 2013 .... Je pense ....
Tony Bao

15
angular n'est pas un micro-cadre: /
iConnor

1
D'accord, Angular n'est pas un micro-framework.
Vojta

2
oui, aussi la courbe d'apprentissage n'est pas proportionnelle, c'est des avantages par rapport à d'autres cadres.
vsync

4
angulaire est tout le contraire d'un micro-cadre. c'est une bête.
hasen


14

Je pense que celui-ci ressemble à quelque chose que vous devriez vérifier: http://knockoutjs.com/

(En tant que programmeur silverlight / wpf, c'est la bibliothèque qui m'a finalement permis de commencer à apprendre le javascript. Elle est basée sur le modèle Model-View-View-Model (MVVM), car pour moi en ce moment me semble être un bon choix!)


En tant que programmeur silverlight / wpf, j'ai évalué knockout, backbone et quelques autres. À la fin de la journée, je suis passé à Angular. Il a des fixations et BEAUCOUP plus.
jonperl


8

Ember.js

Voici les trois fonctionnalités qui font d'Ember un plaisir à utiliser:

  1. Fixations
  2. Propriétés calculées
  3. Modèles de mise à jour automatique

Fixations

Utilisez des liaisons pour synchroniser les propriétés entre deux objets différents. Vous ne déclarez qu'une seule liaison et Ember s'assurera que les modifications sont propagées dans les deux sens.

Voici comment créer une liaison entre deux objets:

MyApp.president = Ember.Object.create({
  name: "Barack Obama"
});

MyApp.country = Ember.Object.create({
  // Ending a property with 'Binding' tells Ember to
  // create a binding to the presidentName property.
  presidentNameBinding: 'MyApp.president.name'
});

MyApp.country.get('presidentName');
// "Barack Obama"

Les liaisons vous permettent de structurer votre application en utilisant le modèle MVC (Model-View-Controller), puis soyez tranquille en sachant que les données circuleront toujours correctement d'une couche à l'autre.

Propriétés calculées

Les propriétés calculées vous permettent de traiter une fonction comme une propriété. Les propriétés calculées sont utiles car elles peuvent fonctionner avec des liaisons, comme toute autre propriété.

Modèles de mise à jour automatique

Ember utilise Handlebars, une bibliothèque de modèles sémantiques. Pour prendre des données de votre application JavaScript et les mettre dans le DOM, créez une balise et placez-la dans votre HTML, là où vous souhaitez que la valeur apparaisse:

<script type="text/x-handlebars">
  The President of the United States is {{MyApp.president.fullName}}.
</script>

2
Il est avantageux d'utiliser la braise sur l'épine dorsale de quelque façon que ce soit .... si les spécifications ne sont pas si claires au début ..
Bijendra

4
J'aime emberJS, mais ce n'est pas "micro", c'est ÉNORME parce que c'est un cadre plat
iConnor

1
L'utilisation d'Ember et d'un microframework dans la même phrase ne devrait pas être autorisée.
Préfixe

8

Stapes.js

Divulgation complète: je suis l'auteur de cette bibliothèque :)

Si vous cherchez quelque chose de vraiment minuscule (1,5 ko minifié / gzippé), jetez un œil et dites-moi si vous l'aimez.


Ça a l'air génial à première vue! J'aime votre concentration sur l'héritage prototypique (pas de classes simulées et pas d' newopérateur déroutant ). Ce qui semble inutile est encore un autre eachet map. Je les ai déjà dans Underscore.js et jQuery .
feklee

7

Si vos besoins sont vraiment simples, vous pouvez écrire votre propre MVC simple comme Alex Netkachov l'a fait.

Ses exemples sont construits sur dojo (Remarque: ils ne fonctionnent pas pour moi sur sa page à cause d'un fichier dojo.js manquant), mais vous pouvez suivre le modèle en Javascript brut.


4

C'est probablement exagéré pour ce dont vous avez besoin, mais SproutCore est un framework MVC, et il n'a pas l'air plus lourd que JavaScriptMVC ou TrimPath's Junction .

Malheureusement, aucun de ceux-ci ne semble être fondé sur le principe de l'amélioration progressive .


1
Les composants MVC de base de JavaScriptMVC sont environ 1k plus grands que ceux de Backbone gzippés (tout en ayant un certain nombre de fonctionnalités supplémentaires). Et JMVC est pleinement capable de créer des applications progressivement améliorées. Vous jetteriez simplement le calque Modèle.
Justin Meyer

3

Le populaire framework ActionScript MVC PureMVC a récemment été porté en JavaScript. Je n'ai pas encore eu l'occasion de l'essayer, mais je suis convaincu que c'est bon.


Je l'aime pour le flex. Simple et puissant.
Glenn

3

S'il vous plaît également vérifier jquery-claypool .

jquery-claypool est un petit framework mvc rapide et disponible construit sur jquery, basé sur mon expérience avec django, rails, spring etc. Son poids très léger et fonctionne à la fois sur le client et dans les environnements serveur.

il fournit un cadre de routage pour le mvc propre, la journalisation des catégories, les filtres (aop), la création paresseuse de contrôleurs, l'inversion de contrôle, la convention sur la configuration et pas beaucoup plus par conception.

il ne fait rien que jquery fait déjà, ressemble à jquery et fonctionne comme un bon framework devrait: simplement.

jquery-claypool

J'espère que vous le vérifiez.


Comment voyez-vous Claypool par rapport à Backbone?
Pepijn




2

Essayez Kitty . Il ne fait que 1,4 Ko et sa seule dépendance est EJS.


2

MISE À JOUR 2016: Sammy.js semble être abandonné.

Jetez un œil à Sammy.js

Texte du site:

Un petit webframework avec classe.

  • Le noyau de SMALL Sammy n'est que 16K compressé et 5.2K compressé et gzippé
  • MODULAR Sammy est construit sur un système de plugins et d'adaptateurs. N'incluez que le code dont vous avez besoin. Il est également facile d'extraire votre propre code dans des plugins réutilisables.
  • CLEAN L'ensemble de l'API a été conçu pour être facile à comprendre et à lire. Sammy essaie d'encourager une bonne encapsulation et une bonne conception d'applications.
  • FUN Quel est le vrai point de développement si ce n'est pas agréable. Sammy essaie de suivre l'approche MATZ. Il est optimisé pour le bonheur des développeurs.

Pourriez-vous nous expliquer ce qu'est MATZ?
kstep le

Yukihiro «Matz» Matsumoto, le créateur de ruby ​​a souvent dit qu'il «essayait de rendre Ruby naturel, pas simple», d'une manière qui reflète la vie. Le logiciel doit donc sembler naturel à l'utilisateur. C'est ce que l'on entend par approche MATZ.
Bijan


1

CorMVC, facile à comprendre et à démarrer, basé sur jquery et ne dépend d'aucune technologie de serveur


1

J'ai développé un framework Javascript MVC très simple appelé MCV . Il ne fait pas exactement ce que vous demandez, mais il est facilement extensible avec des aides. Quoi qu'il en soit, c'est vraiment micro (1,9kb emballé).

Cela fonctionne plus ou moins comme Jamal, mais j'ai décidé de rouler le mien pour deux raisons:

  • supprimer la dépendance jQuery (bien que je l'utilise avec jQuery la plupart du temps)
  • le rendant extensible avec des aides. Ceux-ci sont analogues aux comportements, composants et aides de CakePHP.


1

J'ai voté pour AngularJS (divulgation complète, je suis impliqué de manière limitée dans l'effort de développement angulaire) et j'en suis très enthousiasmé. J'ai fait une comparaison côte à côte en prenant une fonctionnalité pour un projet interne (désolé, je n'ai pas d'approbation pour la partager) et en l'implémentant dans AngularJS et Backbone. C'était un super exercice et au final, je penche beaucoup vers Angular. Les principaux développeurs sont très doués pour répondre aux questions et ils ont fait un très bon travail avec la liaison de données intégrée, les tests unitaires / e2e et la documentation. Il est toujours en version bêta avec la sortie de la version 1.0 dans un proche avenir. La version bêta est très stable.

Il y a un peu de changement de paradigme, et ils utilisent une approche assez différente de la plupart. L'intégration de vos plugins jquery préférés demande un peu d'effort, mais c'est faisable et a été fait (angular-contrib sur github).

Je dirai (et c'est un problème pour la plupart des frameworks centrés sur js), assurez-vous de rechercher comment rendre votre contenu convivial pour le référencement (si cela est important pour vous). Depuis que j'ai rejoint la communauté angulaire en juin, j'ai remarqué que l'intérêt grandissait et qu'un certain nombre de personnes publient des messages disant qu'ils ont regardé Backbone et d'autres mais aiment vraiment ce qu'ils voient dans Angular.








0

Can.js a tout ce dont vous avez besoin et ne pèse que 8 Ko. Il a pris les meilleurs morceaux de JavaScriptMVC et les a distillés dans un cadre petit mais dynamique avec des observateurs, des widgets, des liaisons, les travaux. Il est compatible avec les principaux frameworks ( jQuery , Dojo Toolkit , MooTools , etc.). La documentation est excellente et les auteurs sont réactifs. Cela vaut vraiment le coup d'œil.

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.