Verwenden eines Frameworks wie Backbone [geschlossen]

24

Ich habe derzeit eine Seite http://proctors.org/tv , die von mehreren Ansichten und Anhängen mit Tonnen von jQuery und gehackten JavaScript-Spaghetti angetrieben wird, und ich möchte sie aufräumen. Ich verstehe, dass neuere Javascript "MVC" -Frameworks Vorlagen verwenden und nicht alle Daten streng im DOM speichern, wie Sie es mit jQuery tun könnten.

Ich glaube, Sie würden so etwas wie Services und / oder Views als Backend verwenden, mit Backbone auf der Vorderseite.

Es gibt ein Do-Projekt für Backbone und ich erinnere mich, dass es eine BoF oder Session auf der DrupalCon Denver gibt ...

Ich hoffe herauszufinden, ob es meine Zeit wert ist, dies in einem neuen Rahmen neu zu schreiben oder einfach aufzuräumen, was ich hier habe.

Ryan Price
quelle
4
Was ist die Frage genau? Wenn die Frage lautet "Verwendet jemand Javascript-Frameworks wie Backbone oder Ember mit Drupal?" In diesem Fall handelt es sich um eine Umfrage, die auf Stack Exchange-Sites nicht erwünscht ist. Wenn Sie eine spezielle Frage zur Verwendung eines dieser JavaScript-Frameworks haben, stellen Sie diese Frage.
Kiamlaluno
2
Ich denke, er fragt, ob es MVC-Javascript-Frameworks gibt, die mit Drupals eigenem Javascript-Framework so gut zusammenarbeiten können, dass sie weniger Arbeit bedeuten als nur das Rolling seiner eigenen. Scheint mir fair zu sein - für einige Dinge läuft die Integration mit Drupal wunderbar reibungslos, für andere muss man so viel hacken, dass man es besser von Grund auf neu schreiben sollte - und es scheint fair, Leute zu fragen, die es bereits versucht haben.
user56reinstatemonica8
Wenn Sie ein kurzes Tutorial haben möchten, um Backbone + Drupal zum Laufen zu bringen, können Sie sich meinen Blog-Beitrag pixelite.co.nz/article/…
masterchief vom
Dieser Typ hat einen guten Ausgangspunkt für Backbone und Drupal pixelite.co.nz/article/…
Dan Walmsley
Ha, dieser Typ ist @masterchief von einer der Antworten oben
Ryan Price

Antworten:

18

Ich habe sowohl Ember als auch Backbone zusammen mit Drupal verwendet - aber nicht so, wie Sie denken würden.

Ember und Backbone sind beide gute Werkzeuge, um eine Webanwendung zu erstellen - aber Drupal ist nicht wirklich ein gutes Werkzeug, um zusammen mit ihnen verwendet zu werden. Was Sie sich wünschen, wenn Sie eine Web-App erstellen, ist etwas Leichtes und Schnelles. Sie möchten, dass es schnell gehen kann, um Ihren Nutzern das Gefühl zu geben, sofort zu reagieren. Sie möchten, dass es leicht ist, damit es besser skaliert. Drupal ist nicht schnell - der vollständige Drupal-Bootstrap benötigt (im Vergleich zu vielen anderen Optionen) viel Zeit, wenn Sie lediglich eine REST-API für Ihre Web-App bereitstellen möchten. Drupal ist PHP, was es auch ziemlich RAM-hungrig macht, was die Anzahl der gleichzeitigen Benutzer begrenzt.

Also, wenn Drupal so schlecht für das ist, warum es verwenden?

Sie sollten Drupal wirklich für das verwenden, was Drupal auszeichnet - ein CMS. Bei Projekten, für die eine Web-App erforderlich war, habe ich in der Vergangenheit Drupal verwendet, um das CMS rund um die Web-App zu erstellen. Zum Erstellen von Blogs, Inhaltslisten und Ähnlichem. Ich habe auch Module erstellt, um einige Back-End-Dinge zu definieren - wie Schemadefinitionen und andere Dinge, bei denen die Verwendung von Drupal sinnvoll war -, da dies meine Entwicklung erheblich vereinfacht hat.

Anstatt Drupal zum Erstellen der für die Webanwendung erforderlichen REST-API zu verwenden, habe ich Node.js zum Erstellen der tatsächlichen REST-API und anderer Überprüfungen verwendet, die die Webanwendung für AJAX-Aufrufe benötigt. Node.js zeichnet sich gerade dadurch aus. Es ist blitzschnell (Reaktionszeiten von nur 30 ms für eine Liste von Objekten). Es ist auch sehr leicht, da JavaScript auf dem Server asynchrone Aktionen verwendet, kann ein Node.js-Server normalerweise Tausende von gleichzeitigen Benutzern verarbeiten, wobei PHP möglicherweise 100 verarbeiten kann. Da Node.js JavaScript ist, können Sie außerdem eine Menge wiederverwenden der Code-Server- und Client-Seite. Sie können buchstäblich denselben Validierungscode schreiben, anstatt sowohl die Clientseite in JavaScript als auch die Serverseite in PHP zu implementieren. Wenn Sie in ein paar Wochen zur Drupal con nach München kommen, sollten Sie sich die Präsentation von node.j ansehen.

Wenn Sie ein Entwickler sind, würde ich dringend empfehlen, ein ähnliches Setup durchzuführen und Drupal nur für das zu verwenden, in dem es wirklich gut ist. Wenn Sie eine einfache Webanwendung erstellen möchten und nicht viel Benutzer erwarten, kann die Verwendung von Drupal als Backend eine Option sein, wenn dies Ihre Entwicklungszeit verlängert.


Drupal 8 aktualisieren

Mit der Veröffentlichung von Drupal 8 gelten einige der oben genannten Punkte zwar immer noch, jedoch nicht in demselben Umfang wie zuvor. Drupal 8 ist wie Drupal 7 kein leichtgewichtiges Tool, wie Node.js, Rails, Django usw. Da JavaScript-Apps hauptsächlich verschiedene Dienste nutzen, sollten Sie immer noch überlegen, ob Drupal das beste Tool dafür ist.

Mit Drupal 8 wurden viele Dinge verbessert. Services sind viel nativer, wobei Symphony die Anfrage / Antwort steuert. Drupal 8 bietet mit dem erweiterten Caching und all den tollen Funktionen eine Menge interessanter Möglichkeiten. Aber trotz der Größe von Drupal 8 ist es immer noch viel schwerer als Anwendungen mit geringem Gewicht. Es ist schwer zu sagen, wie erfolgreich Drupal 8 als schneller Webservice-Anbieter eingesetzt werden kann.

Trotz allem bleibt meine allgemeine Empfehlung die gleiche. Als Drupal-Entwickler ist es einfach, Drupal für alles zu verwenden, da wir damit vertraut sind. Es fühlt sich sicher an und Drupal kann für fast alles verwendet werden. Denken Sie daran, dass es zwar möglich ist, Drupal für alles zu verwenden, dies aber nicht bedeutet, dass es das beste Tool für alles ist. Eine fundierte Analyse und das Verstehen der Stärken und Schwächen der Tools, die Sie für ein IT-Projekt verwenden möchten, ist immer eine große Hilfe und kann Ihnen dabei helfen, eine festgefahrene Position mit einem Ergebnis zu vermeiden, das Ihren Erwartungen nicht entspricht .

googletorp
quelle
Interessanter Ansatz. Verwenden Sie drupal.org/project/nodejs oder rollen Sie Ihre eigene Schnittstelle zur Drupal-DB?
mpdonadio
@googletorp, ich habe mit phusion passenger gearbeitet und selbst sie kann ohne Caching und Serveroptimierung keine bessere Leistung erbringen, und alle serverseitigen Skriptsprachen (außer js) haben einiges an Blockierungsproblemen. Infact Ich selbst bin von Ruby auf PHP umgestiegen, weil ich engagierten Performance-Support in der Open-Source-Community habe und extrem einfach zu bedienen bin. Nodejs bleiben im Vergleich zu anderen Sprachen immer schneller.
Minz
Da Drupal auf jeden Fall ein hervorragendes Framework für Servicemodule bietet, dachte ich, Sie könnten etwas Wissen über den Umgang mit Daten auf Kundenseite austauschen, insbesondere über das Übergeben von Sitzungen und anderen Dingen.
Minz
@Minty Es gibt ein Hilfspaket für die Integration in Drupal in Nodejs: github.com/mikl/node-drupal Die tatsächliche Sitzungsabwicklung hängt stark davon ab, wie / was Sie tun. CORS etc, aber normalerweise sende ich der Drupal session_id entweder ein Cookie oder den Request Header.
googletorp
Ich habe gerade diese großartige Backbone-Dokumentation durchgelesen: github.com/kjbekkelund/writings/blob/master/published/… und dachte, man backbone ist eine großartige Möglichkeit, JavaScript zu organisieren und es mit AJAX-Rückrufen über das Routingsystem zu verwenden. Warum nicht mit Drupal kombinieren, da Drupal auf den gleichen Routing-Eigenschaften beruht?
AlxVallejo
6

Ich habe vor kurzem begonnen, meine erste Backbone + Drupal-Anwendung zu entwickeln, und es macht mir wirklich Spaß. Verwenden des Backbone- Moduls zusammen mit Diensten, Dienstansichten und den erforderlichen Bibliotheken. Das Projekt ist ganz einfach: Erstellen eines inhaltsverwaltbaren Karussells mit 6 Seiten, auf denen verschiedene Daten angezeigt werden, sowie eines zusätzlichen News-Schiebereglers, auf dem verschiedene Inhalte angezeigt werden. Diese Seite befindet sich auf verschiedenen Bildschirmen, ohne dass der Benutzer eingreifen muss. Daher muss der Front-End-Inhalt aktualisiert werden können, ohne dass der Browser aktualisiert werden muss. Ich fand, dass dies perfekt in eine Drupal + Backbone-App passt, in der Drupal den Inhalt verwaltet und das Backbone steuert und mit der Datenbank synchronisiert. Ich habe in jquery.cycle 2 integriert, das eine großartige API hat und gut in den MVC-Codierungsstil passt.

Ich kann sehen, warum die Leute vielleicht Drupal als Backend-Framework verwenden, aber für eine kleine Anwendung wie diese ist Drupal leicht und schnell . Ich habe dies erreicht, indem ich mit einer minimalen Installation begonnen und Contrib- und Core-Module sorgfältig ausgewählt habe. Ich bin jetzt bei ungefähr 50 Modulen mit knapp 150 Zeilen benutzerdefiniertem JS-Code für das Backbone-Zeug und ich bin ziemlich fertig.

Irgendwann werde ich versuchen, dies als Beispiel für das Backbone-Modul zurückzugeben, da es derzeit kein Beispiel gibt, das zeigt, wie Views als Sammlungen usw. verwendet werden.

Abschließend:

Es ist Ihre Zeit wert, dies zu untersuchen, wenn Ihr Projekt gut zusammenpasst. Meiner Meinung nach können Leistungsprobleme, die von der Schwere von Drupal herrühren, leicht mithilfe von Caching-Mechanismen wie Varnish oder sogar Boost- oder Core-Page-Caching bekämpft werden. Die Flexibilität und die Geschwindigkeit der Entwicklung bei der Verwendung von Drupal überwiegen für mich die Nachteile.

Meister
quelle
5

Die grundlegende Antwort ist ja, einige Leute benutzen es. Ich habe es selbst nicht verwendet (habe noch kein gutes Projektmatch gefunden), aber es gibt derzeit eine Drupal-Gruppe dafür, und es würde auch in die Web Services- und Context Core-Initiative passen, die eine der Drupal 8-Initiativen ist . Es gibt auch eine Session auf der DrupalCon München 2012, Backbone.js im Frontend .

Ich weiß noch nicht, ob es zur Hauptsendezeit fertig ist, aber meiner Meinung nach lohnt es sich, einen Proof of Concept zu erstellen, wenn Sie etwas haben, das davon profitieren könnte, und die JS-Seite für eine Schnittstelle und nicht für eine Implementierung entwerfen können . Dies würde Ihnen helfen, Änderungen am Backend zu isolieren, falls Sie sich aus irgendeinem Grund entschließen, Drupal zu nutzen.

mpdonadio
quelle
1
Grundsätzlich gilt: Stackexchange ist der falsche Ort, um dies zu erfragen, da es sich an dieser Stelle um einen besonderen Fall handelt. Schlendern Sie zur Gruppendiskussion über gdo
paul-m
MPD bedankt sich für den Link zur Gruppe. Ich werde wahrscheinlich dort weitermachen. Ich hatte einige Fragen in Benutzergruppen gestellt, was wirklich davon abhängt, wer da ist. Ich versuche immer noch herauszufinden, wann ich eine Frage zu Stack Exchange stellen soll. Ich nahm an, dass dies mehr als eine richtige Antwort haben würde, also schien es passend.
Ryan Price
3

Dies könnte hilfreich sein: Es zeigt ein Beispiel für die Konvertierung eines JQuery-basierten Skripts in ein Backbone-Skript. Natürlich müssen Sie backbone.js entweder als Bibliothek mit drupal_add_js oder mit dem Modul herunterladen.

https://github.com/kjbekkelund/writings/blob/master/published/understanding-backbone.md/

Craig Moore
quelle
Hallo Craig, danke für den Link, hast du eine Ressource, in der dies speziell für Drupal verwendet wird? Vielen Dank
Minty