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.
javascript
Ryan Price
quelle
quelle
Antworten:
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 .
quelle
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.
quelle
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.
quelle
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/
quelle