Was sind die wirklichen Stärken und Schwächen der vielen Frameworks, die auf backbone.js basieren?
Hoffe, jemand kann Ihre Erfahrungen mit einigen der neuesten aufstrebenden backbone.js Varianten gibt.
Ich habe einige gute Erfahrungen mit backbone/Unterstrich/benötigen, die in mehreren Projekten und ich werde gerne zu den nächsten Schritt in Richtung mehr fortschrittliche Lösungen für komplexe Anwendungs-Struktur.
Ich weiß, die folgenden frameworks:
- Marionette
- Geppetto (basierend auf Marionette)
- ChaplinChaplin - chaplin-boilerplate
- Wirbel
- LayoutManager
- Thorax
- Aura
- Luca
- Singool
- backstack
- Rückgrat UI
- hulk
- BTW - hervorragender Ausgangspunkt für die big scale-Projekt
Und wahrscheinlich verpasste ich ein paar.
Gibt es eine kurze Einführung über die Unterschiede hier:
aber es ist sehr allgemein. Ich Frage mich, ob jemand kann teilen Sie Ihre Erfahrung mit real-life-Anwendungen mit diesen frameworks.
Was ist der Vorteil der Wahl einen über den anderen? Wann wird die marionette sein, die bessere Lösung über chaplin, oder warum ist vetebrae besser für bestimmte Anwendungen, zum Beispiel.
Sicher, dass die naheliegende Antwort wird sein "verwenden, was am besten für Ihre Bedürfnisse", aber mir fehlt die Erfahrung mit diesen frameworks zu wissen, dass Ihre Stärke/Zweck/Vorteile oder bevorzugte Szenarien.
Dank!
Edit 1:
fanden diesen Beitrag:
Rückgrat.Marionette vs Backbone-Boilerplate
Edit 2:
Antwort von Mathias Schäfer (Chaplin) per E-mail:
Kurz gesagt, die derzeitige Struktur ist in der Nähe, version 1.0, da es bereits in der Produktion eingesetzt. Wir sind nicht in Planung großes neues feature oder brechen API-änderungen bis 1.0.
Marionette ist sicher die umfassendste und stabile Bibliothek gibt. Es behandelt mehrere Aspekte der JS-app-Entwicklung mit Rückgrat. Zum Beispiel, es hat einen starken view-Schicht das Rückgrat sich lässt völlig leer. Natürlich, werden Sie feststellen, dass einige Aspekte nicht Ihre Anforderungen erfüllen, und Sie vielleicht das Gefühl, die Notwendigkeit, eine Struktur Marionette.
Dagegen Chaplin konzentriert sich auf eine eher kleine, aber sehr wichtige Aspekt der Backbone-apps, nämlich der Allgemeinen app-Struktur und Modul-Lebenszyklus. In diesem Zusammenhang Chaplin ist sehr opionated und ist eher ein framework als eine Bibliothek (wie in "Ihr code ruft eine library, ein framework ruft code"). Chaplin stellt einige zentrale Klassen, die sich über die einzelnen Programm-Module und die Steuerung des gesamten app-Zustand. Dies gibt der app einen herkömmlichen Aufbau, wie Ruby on Rails macht es zum Beispiel.
In Chaplin, erklären Sie einige Routen, die Karte zu Controller und Chaplin beginnt der controller mal die route übereinstimmen. Es kümmert sich auch um die Entsorgung der alten Controller und die ein-und Ausblendens von Haupt-Ansichten, die einen controller erzeugen soll. Dies ist die grundlegende Idee, aber Chaplin kümmert sich um die hässlichen details machen diese reibungslos laufen.
Gibt es zwei Hauptpersonen, die kommen zusammen mit dieser Struktur:
- Modularisierung, Entkopplung und sandboxing
- Kreuz-Modul-Kommunikation mittels Publish/Subscribe und Mediator(en)
Natürlich diese Muster sind nicht neu in der software-Entwicklung, Welt, und Chaplin ist nicht die einzige Bibliothek, die für Sie Backbone.js apps....
Chaplin bietet auch Verbesserungen für die View-Schicht, zum Beispiel eine hoch entwickelte CollectionView, aber insgesamt nicht so viel, als Marionette mit seinen Regionen und Layouts. Aber es ist relativ einfach, zu schreiben, wie meta-Klassen, mit den Mitteln Chaplin Aussicht stellen.
InformationsquelleAutor der Frage |
Du musst angemeldet sein, um einen Kommentar abzugeben.
Meisten (alle?) die Rahmenbedingungen, die Sie suchen, auf die gleichen Probleme lösen, aber Sie tun es in leicht unterschiedlicher Weise mit leicht unterschiedlichen Zielen.
Ich denke, es ist fair zu sagen, dass all diese Projekte würden die Probleme lösen, die in diese Kategorien:
Marionette, die ich habe, baut seit Dezember 2011, hat ein paar sehr unterschiedliche Ziele und ideale im Sinn, als gut:
Ich sage nicht, dass keines der anderen frameworks haben die gleichen Ziele. Aber ich denke Marionette Einzigartigkeit kommt aus der Kombination dieser Ziele.
Composite Application Architecture
Ich verbrachte mehr als 5 Jahre Arbeitserfahrung in der thick-client, verteilte software-Systeme mit WinForms und C#. Ich integrierte apps für desktop, Notebook (smart-client), mobile Geräte und web-Anwendungen, die alle teilen ein Kern-Funktionsumfang und arbeitet mit den gleichen server-back-end mehrmals. In dieser Zeit habe ich gelernt, den Wert der Modularisierung und sehr schnell nach unten Weg von composite-application-design.
Ist die Grundidee zu "Komponieren" Ihre Anwendung runtime erleben und verarbeiten, aus vielen kleineren, einzelnen Stücke, die nicht unbedingt voneinander wissen. Sie registrieren sich mit der gesamten composite-Anwendung system, und legen Sie kommunizieren durch verschiedene Mittel der entkoppelten Nachrichten und Anrufe.
Ich geschrieben habe ein wenig über diese auf meinem blog, die Einführung Marionette als composite application architecture for Backbone:
Message Queues /Muster
Derselben großen Maßstab, verteilte Systeme nahm auch die Vorteile der message queuing, enterprise integration patterns (messaging patterns), und service-Busse, die Nachrichten verarbeiten. Dies, mehr als alles andere, hatte einen enormen Einfluss auf mein Ansatz für entkoppelte software-Entwicklung. Ich begann zu sehen, single-process, in-memory-WinForms-Anwendungen aus dieser Perspektive, und bald ist mein server-Seite und web-Anwendungs-Entwicklung nahm Einfluss aus.
Dieser hat direkt übersetzt sich in zu wie ich schauen Backbone-Applikation zu entwerfen. Ich biete ein event aggregator in Marionette, die sowohl für die high-level-Application-Objekt, und für jedes Modul, das Sie erstellen innerhalb der Anwendung.
Ich denke, über die Nachrichten, die ich schicken kann zwischen meine Module: Kommando-Nachrichten, event-Nachrichten, und vieles mehr. Ich denke auch über die server-Seite der Kommunikation Nachrichten mit dieser gleichen Muster. Einige der Muster haben Ihren Weg in Marionette schon, aber einige noch nicht.
Modularisierung
Modularisierung von code ist enorm wichtig. Die kleinen, gut gekapselten Pakete, die einen einzigartigen Fokus mit gut definierten ein-und Ausspeisepunkte, ist ein muss für jedes system erheblicher Größe und Komplexität.
Marionette bietet die Modularisierung direkt durch
module
Definitionen. Aber ich habe auch erkennen, dass einige Leute wie RequireJS und verwenden möchten. So habe ich sowohl einen standard-build und ein RequireJS kompatible Version.(Kein blog-post, die sich noch)
Inkrementelle Nutzen
Dies ist eine der zentralen Philosophien, die ich Backen in jedem Teil der Marionette, die ich kann: keine "alles-oder-nichts" Voraussetzung für die Nutzung von Marionette.
Rückgrat selbst dauert sehr inkrementellen und modularen Ansatz mit all seinen Baustein-Objekte. Sie sind frei zu wählen, welche Sie verwenden möchten, wenn. Ich glaube fest an dieses Prinzip, und danach Streben, um sicherzustellen Marionette funktioniert auf die gleiche Weise.
Zu diesem Zweck, die Mehrzahl der Stücke, die ich gebaut habe, in Marionette gebaut werden, allein zu stehen, um die Arbeit mit dem Kern Stück der Wirbelsäule, und zu arbeiten, gemeinsam noch besser.
Beispielsweise fast jeder Backbone-Anwendung muss dynamisch zeigen eine Backbone-view an einer bestimmten Stelle auf dem Bildschirm. Die apps müssen auch behandeln schließen von alten Ansichten und Reinigung-Speicher, wenn eine neue in Kraft gesetzt. Dies ist, wo die Marionette ist
Region
kommt ins Spiel. Eine region behandelt, die boilerplate-code zu ergreifen, ruft render auf es, und stopfte das Ergebnis in den DOM für Sie. Dann schließen, dass die anzeigen und reinigen Sie es für Sie, wenn Ihr Blick hat eine "close-Methode" auf.Aber Sie sind nicht erforderlich, um Marionette, die Ansichten zur Nutzung einer region. Die einzige Voraussetzung ist, dass Sie den ausbau von Backbone.Ansicht an einem gewissen Punkt in der Prototypkette des Objekts ist. Wenn Sie wählen, um eine
close
Methode, eineonShow
Methode oder eine andere Marionette der Region rufen für Sie an der richtigen Zeit.Keine Server-Lock-in
Ich Baue Backbone /Marionette apps auf einer breiten Vielzahl von server-Technologien:
JavaScript ist JavaScript, wenn es um die in einem browser ausgeführt wird. Server-side JavaScript ist Super, aber es hat null Auswirkung auf, wie Schreibe ich meine browser-basierte JavaScript.
Aufgrund der Vielfalt an Projekten, die ich gebaut und back-end-Technologien, die meine Kunden benutzen, ich kann nicht und wird nicht gesperrt Marionette in einem einzigen server-side-Technologie-stack aus irgendeinem Grund. Ich werde keinen boilerplate-Projekt. I nicht bieten ein ruby-gem oder ein npm-Paket. Ich möchte den Leuten zu verstehen, dass die Marionette nicht erforderlich, einen bestimmten back-end-server. Es ist browser-basierte JavaScript-back-end ist egal.
Natürlich unterstütze ich anderen Menschen, indem Sie Pakete für Ihre Sprache und framework. Ich Liste dieser Pakete im Wiki und hoffe, dass die Leute weiter bauen mehr Pakete, wie Sie sehen müssen. Das ist aber die Unterstützung der Gemeinschaft, nicht die direkte Unterstützung von Marionette.
Einfach Die Standardwerte Zu Ändern,
In meinem Aufwand zu verringern, boilerplate code und geben vernünftige Standardwerte zu definieren (das ist eine Idee, die ich direkt "ausgeliehen" von Tim Branyen ist LayoutManager), erkenne ich die Notwendigkeit für andere Entwickler zu verwenden leicht unterschiedliche Implementierungen als ich.
Ich bieten rendering basierend auf inline -
<script>
tags für templates, mit Underscore.js Template standardmäßig. Aber Sie können ersetzen, die diesem durch die änderung derRenderer
- und/oderTempalteCache
Objekte in Marionette. Diese beiden Objekte stellen den Kern des rendering-Funktionen, und es gibt wiki-Seiten, die zeigen, wie dies zu ändern, für bestimmte Template-engines und unterschiedlichen Möglichkeiten zum laden von Vorlagen.Mit v0.9 der Marionette, wird es sogar noch einfacher. Zum Beispiel, wenn Sie möchten, ersetzen Sie die Verwendung von inline-template-script blocks mit vor-kompilierten Vorlagen, die Sie nur zu ersetzen, eine Methode der Renderer:
und nun auch die gesamte Anwendung vor-kompilierten Vorlagen, die Sie befestigen, um Ihre Ansicht
template
Attribut.Ich auch eine Marionette.Async-add-on mit v0.9 zur Unterstützung von asynchron Rendern von views zu automatisieren. Ich ständig darum bemühen, dass es so einfach wie möglich zu ersetzen, um die Standard-Verhaltensweisen, die in der Marionette.
Code Als Konfiguration
Ich bin ein fan von "convention over configuration" in bestimmten Kontexten. Es ist eine leistungsstarke Möglichkeit, Sachen zu erledigen, und Marionette bietet ein wenig von diesem - wenn auch nicht allzu viel, ehrlich gesagt. Viele andere frameworks auch - vor allem-LayoutManager - mehr-Konvention über Konfiguration als Marionette tut.
Ist dies mit Zweck und Absicht.
Habe ich genug gebaut JavaScript-plugins, frameworks, add-ons und Applikationen zu wissen, die Schmerzen zu versuchen, um Konventionen zu arbeiten, in eine sinnvolle und schnelle Art und Weise. Dies kann mit der Geschwindigkeit, in der Regel aber auf Kosten des seins in der Lage, es zu ändern.
Zu diesem Zweck habe ich einen "code-Konfiguration" - Ansatz zur Marionette. Ich glaube nicht, eine Menge "Konfiguration" - APIs, wo man ein Objekt-literal mit statischen Werten, ändern Sie eine Schneise der Verhaltensweisen. Stattdessen dokumentieren Sie die Methoden, die jedes Objekt hat - sowohl durch die kommentierten source-code und über die tatsächlichen API-Dokumentation - mit der Absicht, Ihnen zu sagen, wie ändern Marionette zu arbeiten, wie Sie wollen.
Indem Sie eine saubere und klare API für die Marionette Gegenstände, die ich eine situation schaffen, wo Austausch, das Verhalten von einem bestimmten Objekt oder einer Marionette als ganzes ist relativ einfach und sehr flexibel. Opfere ich die "einfache" Konfiguration-API-Aufrufe für die Flexibilität der Bereitstellung Ihrer eigenen code, um Dinge zu machen, arbeiten in der Weise, dass Sie wollen.
Werden Sie nicht finden, eine "Konfiguration" oder "Optionen" - API, die Marionette. Aber Sie finden eine große Anzahl von Methoden, die alle dienen einem bestimmten Zweck, mit sauberen Signaturen, die es einfach zu ändern, wie Marionette funktioniert.
InformationsquelleAutor der Antwort Derick Bailey
Ich bin derzeit mit Rückgrat, mit dem layout-manager-Modul und LENKER als Template-engine und die fand ich wirklich einfach zu set-up eine kleine Anwendung mit einem bereits bestehenden Grails-backend. Vor dem Start mit layout-manager habe ich gelesen, Marionette und Chaplin und die beiden Schienen mir wirklich mächtig, aber Komplex. Dann erinnerte ich mich daran, warum ich ursprünglich ausgewählt backbone.js: Einfachheit. All diese frameworks sind hinzufügen, was Rückgrat ist Links durch design. Ich sage nicht, dass ein Rahmen schlecht ist, aber wenn ich brauche etwas komplexer, ich werde versuchen, andere Projekte, wie ember.js oder sproutcore, da Sie eine einzigartige codebase, geschrieben mit dem Ziel, in den Köpfen Ihrer Entwickler. Hier haben wir die Rahmenbedingungen auf den anderen ein. Natürlich backbone ist das Rückgrat nicht nur für den Aufbau von Anwendungen, aber auch für das schreiben von etwas mehr leistungsfähige Bibliothek, aber die einzige Sache, die ich denke, ist wirklich arm ist der view-Schicht, da fehlt ein layout-manager und die Möglichkeit der Verschachtelung von Ansichten. Mit dem layout manager, dass die Lücke gefüllt ist, ganz gut.
So, meine Antwort auf Ihre Frage ist: aus mit Rückgrat, wie es ist, und Fragen Sie sich, was fehlt und was waren Ihre Erwartungen über den Rahmen. Wenn Sie finden, es gibt zu viele Dinge ausgelassen durch das Rückgrat, gehen dann, und die Suche nach Ihnen in den anderen frameworks und wählen Sie die am nächsten ist, Ihre Bedürfnisse. Und Wenn Sie noch nicht überzeugt von der Wahl, vielleicht Rückgrat ist nicht für Sie und Sie haben sich eine andere Lösung (ember.js, sproutcore, ExtJs, JavaScript, MVC sind alle gut). Wenn Sie Erfahrung im schreiben von client-apps, die Sie nicht wirklich brauchen Erfahrung auf alle Rahmen gibt, um wählen Sie die richtige (für Sie natürlich)
InformationsquelleAutor der Antwort Pierpaolo Follia
Ich studiert habe die verschiedenen frameworks bauen mit Backbone.js und gebaut die Wirbel für ein Projekt bei HauteLook. Das Projekt Ziele enthalten... dynamisches Skript laden, AMD-Modul-format, dependency management, bauen mit meist open-source-Bibliotheken, organisieren-code in Pakete, zu optimieren und zu bauen für eine oder viele single-page-apps, - host an voll-Cache-server, z.B. keine server-side-scripting verwenden nur eine API für die Daten, und das lustigste für mich Verhalten driven development für das Projekt. Es ist eine Beschreibung des Projekts an : http://www.hautelooktech.com/2012/05/24/vertebrae-front-end-framework-built-with-backbone-js-and-requirejs-using-amd/
Unser Problem:
Ausgewählten Bibliotheken (jQuery, Underscore.js, Backbone.js, RequireJS, Schnurrbart) bieten das Modul geladen wird, dependency management, Applikations-Struktur (für Modelle, Sammlungen, Ansichten und Routen), asynchrone Interaktionen mit API, verschiedene Werkzeuge und Objekte zu verwalten asynchrone Verhalten, z.B. (Verspricht) Deferreds, Rückrufe. Die Verbleibende Logik zu vervollständigen, benötigen das framework umfasst:
Unsere Lösungen (implementiert in der Wirbelsäule):
Application State Manager -
Application manager speichert die Daten im Speicher und auch weiterhin Daten im browser Speicher zu einer Ressource für gemeinsame Daten/Metadaten. Auch stellt Daten (Zustand) zu rekonstruieren, die Seite Ansichten auf Basis der bisherigen Interaktionen (z.B. ausgewählte Registerkarte Filter angewendet). Die Anwendung Status-manager stellt eine Strategie für Ressourcen abrufen Staat. Bedeutete, zu handeln wie eine state machine.
Layout-Manager -
Den layout-manager hat einen oder viele Ansichten, als auch als Dokument (DOM) Reiseziele für jeden (gerendert) sehen. Eine Seite kann der übergang zwischen verschiedenen Ansichten, so dass der layout-manager keeps track of view Staaten, z.B. Leistungen, die nicht gerendert wird, angezeigt, nicht angezeigt. Sie können die layout-manager zu faul laden und Rendern (detached) Ansichten, die ein Website-Besucher ist sehr wahrscheinlich auf Anfrage, z.B. Registerkarte änderungen auf einer Seite. Der übergang zwischen den view states verwaltet wird dieses Objekt. Eine ganze Layouts können gelöscht werden, damit die view-Objekte und deren Bindungen werden entfernt, der Vorbereitung von Objekten für die garbage-collection (Vermeidung von memory-leaks). Der layout-manager kommuniziert auch view state mit controller(s).
Controller -
Einem controller-Objekt aufgerufen wird, eine route-handler-Funktion, und ist verantwortlich für das abrufen von relevanten staatlichen (Anwendung von Modellen) zum generieren einer Seite (layout), (auch verantwortlich für die Einrichtung des Staates, wenn sich Routen ändern). Der controller übergibt abhängigen Daten (Modelle/Kollektionen) und konstruiert Objekte anzeigen, die für eine angeforderte Seite auf dem layout-manager. Als ein Nebeneffekt der Verwendung von Controllern verhindert, dass die Routen-Objekt aus immer aufgedunsen und verwirrt. Eine route in der Karte ein controller, dann startet die Seite anzuzeigen, halten Sie die route-handling-Funktionen lehnen.
Todos app gehostet ist sowohl im dev-Modus und optimiert auf Heroku...
Viele der Konzepte, die in anderen Kontexten entliehen sind, so z.B. die Notwendigkeit zu destory Ansichten zur Vorschau von Speicher-Lecks wie bereits von Derick Bailey - http://lostechies.com/derickbailey/ ; die Layout-Manager von Tim Branyen http://tbranyen.github.com/backbone.layoutmanager/
In der Zusammenfassung, Backbone.js gemeint ist ein Werkzeug in Ihrer Anwendung der Backbone.js Bibliothek nicht alle der Architektur, die Sie benötigen, um eine Anwendung zu erstellen, aber Sie bietet tolle Interaktionen mit einer API und solide code-Struktur für... Views (act wie der Controller auch) und deine Daten-layer-Modelle und-Sammlungen, und schließlich Routen. Wir Bauten Wirbel Fleisch der Ziele unseres Projekts und beschlossen, extrahieren Sie den code als framework für andere einzusetzen, lernen, oder was auch immer.
Die Antwort auf deine Frage ist meiner Meinung nach zu lernen, aus aller frameworks und verwenden, was Sie brauchen, um Ihre Ziele zu erreichen, wenn Sie feststellen, dass Ihre Projektziele eng mit einem der frameworks gebaut, mit Rückgrat, dann Super, ansonsten Ihr eigenes framework gibt es tolle Beispiele werden mit der Gemeinschaft geteilt. Oder wenn Sie sich ein wenig verloren in der Richtung von Ihre Anwendung dann wählen Sie etwas mehr rechthaberisch und strukturierte vielleicht Ember.js. Das tolle ist, es gibt eine Menge von Möglichkeiten zu helfen, geben Sie den code mithilfe einer (MVX) MVC-Muster mit JavaScript.
InformationsquelleAutor der Antwort pixelhandler
Entwickelte ich die Luca framework während der Arbeit bei BenchPrep, wo wir verwendet, es zu entwickeln, mehrere große single-page-apps auf der Oberseite des backbone.js Bibliothek.
Ich hatte mit ExtJS für mehrere Jahre vor und gestohlen haben, meine Lieblings-Konzepte aus, die Rahmen wie der component-driven architecture, wo Sie entwickeln Ihre Ansichten als standalone-Komponenten und dann kommen Sie zusammen mit anderen Komponenten Verwendung von container views. Und da ist es schwer, basierend auf Konfiguration, Entwicklung einer app in Luca fühlt sich viel wie der Beschreibung eines Objekts mit den JSON-Format.
Ein Vorteil dieses Ansatzes ist die Möglichkeit der Wiederverwendung von Komponenten in mehreren Anwendungen oder in verschiedenen Orten in Ihrer app, mit der mit nur geringfügigen änderungen, die mit Backbone erweitern. Es ist auch sehr leicht, zu Experimentieren mit vielen verschiedenen layouts /Präsentationen der Komponenten, indem Sie nur geringfügige änderungen an der JSON-Konfiguration.
Neben einer Vielzahl von Helfer - /utility-Funktionen, Luca Schiffe mit vielen höheren Ebene Rückgrat-Derivate, können Sie Stück zusammen, die in irgendeiner Weise imagineable zu bauen ist eine komplexe UI.
Ansichten, Komponenten, Behälter
Twitter Bootstrap Styles und Markup Für Freie
Die Anwendungskomponente
Sammlung und Modell-Erweiterungen
Events und Hooks
Luca Komponenten sind mehr liberal mit den Veranstaltungen, die Sie emittieren im Vergleich zu den stock-Backbone-Komponenten. Sie emittieren Ereignisse wie vor:initialisieren nach:initialisieren vorher: - render, nach:render, Aktivierung, zuerst:Aktivierung, Deaktivierung, erste: - Deaktivierung, und dies ermöglicht Ihnen, mehr fein tunen das Verhalten Ihrer Komponenten. Plus, durch die Definition einer Veranstaltung in die @hooks Haus - /Wohnungseigentümer auf Ihre anzeigen, es wird automatisch aufgerufen, eine ähnlich benannte Funktion für Sie, wenn es vorhanden ist. Dies verhindert, dass eine Menge von callback-Stil-code, was die Lesbarkeit verbessert.
Können Sie auch so konfigurieren, dass der Luca.Ereignisse der Klasse um die Ereignisse zu veröffentlichen, um eine Globale publish /subscribe-channel, was macht den Bau einer großen Anwendung einfacher und aids in inter-Modul-Kommunikation.
Die Ruby-Gem
Luca wurde speziell entwickelt während der Arbeit gegen die Rails und Sinatra-APIs und weil dieses ist derzeit optimiert für einen bestimmten stack, aber es in keiner Weise sperren Sie in einen bestimmten server.
Luca kommt vertrieben wird, ist ein Ruby-Gem so konfiguriert, dass Sie auf der asset-pipeline, oder als herunterladbare JS-Datei.
Sind Sie nicht erforderlich, um Rails oder Sinatra. Aber wenn Sie das tun, ich habe auch eine Menge nützlicher Dinge:
Die Entwicklungs-Tools
Mit Hilfe der Rails Gem, und Luca Nutzung des Codemirror-component-editor, können Sie den Quellcode der Luca Rahmenbedingungen als auch die Anwendung bestimmter Komponenten direkt im browser, mit Coffeescript. Sie werden sehen, ein sofortiges feedback in Reaktion auf Ihre änderungen, mit der Instanzen erfolgt Objekten aktualisiert wird mit den aktualisierten Prototyp, und Sie können Ihre änderungen speichern auf der Festplatte.
Den Component Tester ist ein live-sandbox für das spielen mit den Komponenten, aus denen Ihre Anwendung in der Isolierung. Es bietet Ihnen die tools zum ändern der Komponente, Prototypen, einrichten von Abhängigkeiten, konfigurieren der Komponente. Die Komponente wird erneut Rendern sofort jedes mal wenn Sie eine Bearbeitung. Sie können anzeigen und Bearbeiten, markup, dass die Komponente generiert werden, sowie die CSS direkt im browser und Sie sehen Ihre änderungen sofort. Dies macht ihn zu einem sehr wertvollen Experiment-tool.
Den Component Tester werden bald die Integration mit Jasmin, so dass Sie die Ergebnisse Ihrer Komponenten-unit-tests in Echtzeit, den Sie Bearbeiten, Ihren code
Luca ist ein work in progress, aber verwaltet eine stabile API ( noch nicht 1.0 ) und wurde in mehrere große Produktions-apps. Es ist definitiv ein sehr eigenwilliger Rahmen, aber ich arbeite daran, mehr modular. Ich bin aktiv an der Dokumentation und Beispiel-Komponenten.
InformationsquelleAutor der Antwort Jonathan Soeder
Ich bin ein co-Autor von Chaplin und ich habe geschrieben einen umfangreichen Vergleich zwischen Chaplin.js und Marionette.js:
http://9elements.com/io/index.php/comparison-of-marionette-and-chaplin/
Dies ist nicht ein "shootout", sondern versucht zu erklären, beide Ansätze in einer ausgewogenen Weise.
InformationsquelleAutor der Antwort