Backbone.js mit ASP.NET MVC
In den letzten Tagen, die ich gelesen habe über Backbone.js und wie es vereinfacht JS-code Interaktion mit View-Elemente grundsätzlich innerhalb von HTML. Das habe ich auch gelesen über die Unterschiede zwischen KnockoutJS und Backbone.js. Jetzt bin ich am überlegen, ob mit einer oder der andere führt unweigerlich zu überschneidungen mit den code, den wir bereits in unserem MVC-app (meist ViewModels und-Routen in der globalen.asax) in unseren Ansichten. Im wesentlichen verlangen wir von code ein weiterer Satz von Modellen in Backbone-oder Knockout. So wie ich das verstehe, mit KnockoutJS ist dies sogar noch häufiger, das ist, warum ich dachte, ich wähle Rückgrat, aber jetzt denke ich ist es nicht anders - nach ein paar Beispielen, die ich sah, dass gleiche Vervielfältigung wird immer deutlicher.
Auch wie sorgen wir für eine solche Anwendung, wenn zum Beispiel wir haben bereits eine Reihe von MVC Teilweise Ansichten und jetzt sollen wir neu Sie in Backbone mit einigen Template-engine wie JQuery templates?
- die gleiche Frage wurde zu schlagen, bis mein Geist und ich bin froh, dass u ihn gefragt
Du musst angemeldet sein, um einen Kommentar abzugeben.
Gelesen haben, über Rückgrat und knockoutjs mich in letzter Zeit, und war auch überlegte, wie Sie nutzen das framework mit asp.net mvc.
Ein Ansatz zur Vermeidung der Duplikation von Modellen ist die Serialisierung (json) - die server-Seite-viewmodel und verwenden Sie es als backbone-oder knockout-Modell. Positiver Nebeneffekt: Ihre client-side Modelle beinhalten bereits die Daten auf die Seite laden und nicht zum abrufen der Daten über einen ajax-request, wenn die Seite zuerst geladen wird.
Ich bin mir bewusst, dass nur mit der Serialisierung der serverside-viewmodel ist nicht genug für backbone/knockout, aber es könnte ein Ausgangspunkt sein. Vielleicht ist das serialisierte Modell könnte sein, eine Eigenschaft, auf die clientseitige Modell.
Über jquery templates, die ich in der Regel setzen ein jquery-Vorlage in a partial view. Auf diese Weise sind Sie leicht gemacht in deiner Ansicht wie diese:
Offensichtlich, die Portierung einer bestehenden Anwendung zu nutzen, jquery templates wird einige Zeit dauern und Aufwand.
Ich verwendet Rückgrat Schienen, auf ein Projekt einmal, und ich landete nochmal alle meine Vorlagen in Unterstrich - underscore.js ist eine Abhängigkeit von Rückgrat und kommt mit seinen eigenen Template-Sprache.
Meine app war nicht sehr groß, so dass es am Ende nicht nehmen eine Menge Zeit. Wenn Ihre app ist schon ziemlich Komplex, als es vielleicht eine andere Geschichte.
Wie Suhas sagte, Backbone-Sammlung hat die Fähigkeit zu Holen alle Ihre Modelle aus dem server, und Sie können senden Sie Sie zurück mit einem save-Funktionalität, die piggy-backs auf die Jquery-ajax-Aufrufe. Alles, was Sie tun müssen ist, stellen Sie sicher, Sie werden serialisiert, über JSON.
Fand ich eine aktuelle 4-teilige Serie zur Verwendung mit Rückgrat ASP.NET MVC 3 - vielleicht wird es für Sie hilfreich: http://www.bitcandies.com/blog/2011/asp-net-mvc3-restful-application-tutorial-with-backbone-js-part-i/
Plus macht eine gute Referenz für mich, um zurück zu verweisen, wenn ich mal an .net mvc 🙂
Ich empfehlen, was ddango sagte in seinem Kommentar zu seiner Antwort. Starten Sie die Entwicklung neuer Funktionen mit Rückgrat oder knockout. Wir haben eine web-app, die die meisten der Website ist die in der konventionellen asp.net mvc und einmal haben wir gelernt, über knockout begannen wir erstellen Seiten, die Nutzung von ko. Sie können friedlich koexistieren. Wenn dann der Wunsch besteht, ersetzen Sie alte Funktionen aus welchem Grund auch immer(Wartbarkeit oder Sie haben zu viel Zeit auf Ihren Händen 😉 ). Dann können Sie es tun, ein Stück zu einer Zeit.
Die Strategie, die wir fangen, zu nehmen, ist für asp.net mvc-Controller haben zwei Arten von Funktionen.
HTH
Wenn Sie lieber nicht schreiben Sie Ihre Teiltöne in den templates, können Sie Sie als solche zu behandeln durch die Verwendung von controller-Methoden, die zurückkehren wird der partial-view as html, die Sie abrufen render oder initialisieren der Wirbelsäule anzeigen, zB:
Könnten Sie wahrscheinlich diese Methode einen Schritt weiter, indem Sie zunächst das abrufen des Ansicht-Modell auf der client-Seite (oder bauen) und dann posten Sie die Aktion erstellen, anstatt ein view-Modell innerhalb der Aktion.
(Ich würde behaupten, dass gegen dieses alles andere als ein interim, während Sie migrieren zu Vorlagen, obwohl Sie immer machen, einen post zu machen etwas, wenn Sie könnten auf die Daten der client-Seite bereits und müssen nur den template-string)
re: ViewModels, das laden von Daten von einem controller über
JsonResult
oder durch serialisieren zunächst ist der Weg zu gehen. Sie nicht brauchen, um doppelte viel code für Backbone-Modelle - die json wird in das Modell geladen und geparst wurden in Attribute, auf die Sie Zugriff über das Backbone-api.definitiv empfehlen, diesen Artikel (obwohl nicht asp.net mvc-spezifisch):
http://backbonetutorials.com/what-is-a-model/
http://www.jamesyu.org/2011/01/27/cloudedit-a-backbone-js-tutorial-by-example/
Den cloudedit tutorial ist eine version hinter (
Controllers
sind jetztRouters
), aber ist immer noch ein guter Ort, um zu starten - und die parallelen zwischen Schienen und ASP.NET MVC sind leicht zu sehen.Konnte nicht sprechen, ko, obwohl!
Können Sie Ihre ASP.NET MVC-app als RESTful service emitting JSON für Ihre view-Modelle. Die Backbone-Modelle können direkt in der Karte, um das JSON-Format.