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 .