Esiste un framework MVC (micro-) JavaScript? [chiuso]


133

Esistono framework MVC (micro-) JavaScript sul lato client ?

Ho un modulo HTML piuttosto complicato e trarrebbe beneficio dal modello MVC.

Immagino che una buona soluzione fornirebbe quanto segue:

  • Model and View aggiorna il Controller quando cambiano i valori (modello Observer)
  • Popolare il modello dai dati del modulo quando la pagina viene caricata
  • Popolare il modulo dal modello quando il modello cambia

Ajax, cometa, JSONP e tutto quel jazz sono davvero eccessivi.


2
Sbaglio o è solo una cattiva idea (o forse un framework conforme a parole d'ordine) ?.

2
Ho iniziato a lavorare su qualcosa un po 'di tempo fa perché avevo la stessa sensazione di te. È minimale, AMD e non inventato quanto potrei ottenere. Ciò significa che non c'è jQuery ecc. So che ora è stato chiuso, ma penso che questo potrebbe essere il tipo di cosa che stavi cercando: github.com/Wolfy87/tarmac - Non ci ho fatto molto recentemente perché pensavo di sarebbe l'unico utente.
Olical,


Dai un'occhiata a TodoMVC , che confronta (quasi) tutti i framework JavaScript disponibili implementando una semplice app TODO.
Koppor,

Risposte:



33

JavaScriptMVC è un'ottima soluzione. È tutto ciò che un approccio a plugin ti consente di selezionare solo le funzionalità di cui hai bisogno. A partire da 2.0, si basa su jQuery.

Migliorando progressivamente il tuo sito Web, è lasciato all'utente poiché JMVC fornisce solo uno strato intermedio per lo sviluppo: spetta a te fare tu stesso quella scelta di design.

Tuttavia, JavaScriptMVC è semplicemente la migliore libreria JavaScriptMVC per tutti gli usi a causa dei suoi potenti controller basati su delega di eventi.

La delega degli eventi ti consente di evitare di associare i gestori di eventi e di creare semplicemente regole per la tua pagina.

Infine, JMVC è molto più di un'architettura MVC. Comprende tutte le parti del ciclo di sviluppo con:

  • Generatori di codice
  • Test integrati di selenio ed Env.js
  • Motore di documentazione
  • Concat + Compress automatico
  • Rilevazione e segnalazione degli errori

1
+1 per JavascriptMVC - L'ho usato per alcune app ora ed è abbastanza carino. Salta gli esempi di generazione del codice sul sito Web. Immagino che siano lì solo per pacificare i fan di Rails. :) Inizia con il modello di oggetti JQueryMX di base e crea un controller.
Chris Jaynes,

1
Da quando ho fatto questo commento, sono passato all'utilizzo di Require and Spine. Alla fine sono più piccoli, più eleganti e meno "Enterprisey" di JMVC. JMVC è stato bello per il nostro team di sviluppatori Java per apportare le modifiche a JS, ma non regge quando si inizia a capire meglio JS ...
Chris Jaynes,

La parte MVC di JMVC è ora can.js
PHearst,

21

Spine ha un'API simile a Backbone ma è molto più piccola. Presenta un'eredità prototipale.


2
È anche scritto in CoffeeScript e usa lo stile delle classi di CoffeeScript - non è una vittoria enorme, ma è abbastanza carino.
un secchione pagato l'

1
Suppongo che sia per questo che è piccolo di spina dorsale? Il codice Coffeescript è più compatto ...
Brenden,

Adoro Spine. Usalo con RequireJS per pura bellezza. Non lasciarti spaventare dal fatto che sia CoffeeScript, funziona anche bene con il normale JS ...
Chris Jaynes,

Il supporto del browser è IE> = 9, quindi controlla che corrisponda al profilo dei tuoi visitatori.
Richard,

20

AngularJS lavora bene insieme a jQuery e ti aiuterà molto con la struttura MVC e la rigorosa separazione delle preoccupazioni.

Ambiente di test completo e Iniezione delle dipendenze inclusa ...

Dai un'occhiata a http://angularjs.org


Angularjs è il migliore finora alla fine del 2013 .... Penso ....
Tony Bao,

15
angolare non è un micro framework: /
iConnor

1
D'accordo, Angular non è un micro-quadro.
Vojta,

2
sì, anche la curva di apprendimento non è proporzionale, è vantaggi rispetto ad altri framework.
vsync,

4
angolare è esattamente il contrario di una micro-struttura. è una bestia.
hasen


14

Penso che questo assomigli a qualcosa che dovresti dare un'occhiata: http://knockoutjs.com/

(Come programmatore silverlight / wpf questa è stata la libreria che mi ha fatto finalmente iniziare ad imparare javascript. Si basa sul modello Model-View-View-Model (MVVM), poiché per me in questo momento sembra una buona scelta!)


Come programmatore silverlight / wpf ho valutato knockout, backbone e un paio di altri. Alla fine della giornata sono passato ad Angular. Ha attacchi e MOLTO altro.
jonperl,


8

Ember.js

Queste sono le tre funzioni che rendono Ember una gioia da usare:

  1. Attacchi
  2. Proprietà calcolate
  3. Modelli di aggiornamento automatico

Attacchi

Utilizzare i bind per sincronizzare le proprietà tra due diversi oggetti. Basta dichiarare un'associazione una volta ed Ember si assicurerà che le modifiche vengano propagate in entrambe le direzioni.

Ecco come creare un'associazione tra due oggetti:

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"

I binding ti consentono di progettare la tua applicazione utilizzando il modello MVC (Model-View-Controller), quindi stai tranquillo sapendo che i dati fluiranno sempre correttamente da un livello all'altro.

Proprietà calcolate

Le proprietà calcolate consentono di trattare una funzione come una proprietà. Le proprietà calcolate sono utili perché possono lavorare con i binding, proprio come qualsiasi altra proprietà.

Modelli di aggiornamento automatico

Ember utilizza il manubrio, una libreria di modelli semantici. Per prendere i dati dalla tua applicazione JavaScript e inserirli nel DOM, crea un tag e inseriscilo nel tuo HTML, ovunque desideri che appaia il valore:

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

2
è vantaggioso per la brace utilizzare la spina dorsale in alcun modo .... se le specifiche non sono così chiare nelle fasi iniziali ..
Bijendra

4
Mi piace emberJS, ma non è "micro" , è ENORME perché è un framework flat out
iConnor

1
L'uso di Ember e microframe nella stessa frase non dovrebbe essere consentito.
Prefisso

8

Stapes.js

Divulgazione completa: sono l'autore di questa biblioteca :)

Se stai cercando qualcosa di veramente piccolo (1.5kb minificato / compresso) dai un'occhiata e dimmi se ti piace.


Sembra fantastico a prima vista! Mi piace concentrarti sull'eredità prototipale (nessuna classe simulata e nessun newoperatore confuso ). Ciò che sembra inutile è ancora un altro eache map. Li ho già in Underscore.js e jQuery .
febbraio

7

Se le tue esigenze sono davvero semplici, potresti scrivere il tuo semplice MVC come ha fatto Alex Netkachov .

I suoi esempi sono basati su dojo (Nota: non funzionano per me sulla sua pagina a causa di un file dojo.js mancante), ma è possibile seguire il modello in Javascript semplice.


4

Probabilmente è eccessivo per quello che ti serve, ma SproutCore è un framework MVC e non sembra più pesante di JavaScriptMVC o TrimPath's Junction .

Sfortunatamente, nessuno di questi sembra essere basato sul principio del miglioramento progressivo .


1
I componenti MVC di base di JavaScriptMVC sono circa 1k più grandi di quelli di Backbone gzipped (mentre hanno un numero di funzionalità in più). E JMVC è in grado di creare app progressivamente migliorate. Butteresti via il layer Model.
Justin Meyer,

3

Il popolare framework MVC di ActionScript PureMVC è stato recentemente portato su JavaScript. Non ho ancora avuto la possibilità di provarlo, ma sono sicuro che sia buono.


Mi piace per il flex. Semplice e potente.
Glenn,

3

Per favore, controlla anche jquery-claypool .

jquery-claypool è un framework mvc piccolo, veloce e disponibile basato su jquery, basato sulla mia esperienza con django, rotaie, primavera ecc. È molto leggero e funziona sia su client che in ambienti server.

fornisce un framework di routing per mvc pulito, registrazione delle categorie, filtri (aop), creazione pigra di controller, inversione di controllo, configurazione eccessiva delle convenzioni e non molto di più in base alla progettazione.

non fa già nulla di jquery, si sente come jquery e funziona come dovrebbe fare un buon framework: semplicemente.

jquery-Claypool

Spero che tu lo controlli.


Come vedi Claypool in relazione a Backbone?
Pepijn,





2

AGGIORNAMENTO 2016: Sammy.js sembra essere abbandonato.

Dai un'occhiata a Sammy.js

Testo dal sito:

Un piccolo fotogramma web con classe.

  • PICCOLO core di Sammy è solo 16K compressi e 5,2K compressi e compressi
  • MODULAR Sammy è basato su un sistema di plug-in e adattatori. Includi solo il codice che ti serve. È anche facile estrarre il tuo codice in plugin riutilizzabili.
  • PULITO L'intera API è stata progettata per essere di facile comprensione e lettura. Sammy cerca di incoraggiare un buon incapsulamento e il design dell'applicazione.
  • DIVERTIMENTO Qual è il vero punto di sviluppo se non è divertente. Sammy cerca di seguire l'approccio MATZ. È ottimizzato per la felicità degli sviluppatori.

Potresti espandere, per favore, su cos'è MATZ?
kstep,

Yukihiro "Matz" Matsumoto, il creatore del rubino, ha spesso affermato che sta "cercando di rendere Ruby naturale, non semplice", in un modo che rispecchi la vita. Quindi il software dovrebbe sembrare naturale per l'utente. Questo si intende per approccio MATZ.
Bijan


1

CorMVC, facile da capire e da cui iniziare, basato su jquery e non dipende da alcuna tecnologia server


1

Ho sviluppato un framework Javascript MVC molto semplice chiamato MCV . Non fa esattamente quello che chiedi, ma è facilmente estensibile con gli aiutanti. Ad ogni modo, è sicuramente micro (1,9kb imballato).

Funziona più o meno come Jamal, ma ho deciso di fare il mio per due motivi:

  • rimuovere la dipendenza jQuery (anche se la uso spesso con jQuery per la maggior parte del tempo)
  • rendendolo estensibile con gli aiutanti. Questi sono analoghi ai comportamenti, ai componenti e agli aiutanti di CakePHP.


1

Ho votato a favore di AngularJS (divulgazione completa, sono coinvolto in modo limitato con lo sforzo di sviluppo angolare) e ne sono molto entusiasta. Ho fatto un confronto side-by-side prendendo una funzionalità per un progetto interno (scusate non ho l'approvazione per condividerla) e implementandola in AngularJS e Backbone. È stato un ottimo esercizio e alla fine sono molto incline verso Angular. Gli sviluppatori principali sono entusiasti di rispondere alle domande e hanno fatto davvero un buon lavoro con database integrato, test unit / e2e e documentazione. È ancora in beta con 1.0 in uscita nel prossimo futuro. La beta è molto stabile.

C'è un po 'di cambio di paradigma e usano un approccio abbastanza diverso rispetto alla maggior parte. L'integrazione dei tuoi plugin jquery preferiti richiede un po 'di sforzo, ma è fattibile ed è stato fatto (contributo angolare su github).

Dirò (e questo è un problema per la maggior parte dei framework js-centric), assicurati di studiare come rendere i tuoi contenuti SEO-friendly (se è importante per te). Da quando mi sono unito alla comunità angolare a giugno, ho notato che l'interesse sta crescendo e un certo numero di persone sta pubblicando post dicendo di aver guardato Backbone e altri, ma che piace molto a quello che stanno vedendo in Angular.








0

Can.js ha tutto ciò di cui hai bisogno e pesa solo 8 KB. Ha preso i bit migliori da JavaScriptMVC e li ha distillati in un piccolo ma potente framework con osservatori, widget, rilegatura, opere. È compatibile con i principali framework ( jQuery , Dojo Toolkit , MooTools , ecc.). La documentazione è eccellente e gli autori sono sensibili. Vale sicuramente la pena dare un'occhiata.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.