Я использовал и Ember, и Backbone вместе с Drupal - но не так, как вы думаете.
Ember и Backbone являются прекрасными инструментами для создания веб-приложений, но Drupal не очень хороший инструмент для использования вместе с ними. То, что вы хотите, когда вы создали веб-приложение, является чем-то легким и быстрым. Вы хотите, чтобы он был быстрым, чтобы дать вашим пользователям ощущение немедленного ответа. Вы хотите, чтобы он был легким, чтобы он лучше масштабировался. Drupal не быстр - полная загрузка Drupal занимает много времени (по сравнению с множеством других опций), если все, что вам нужно, это предоставить REST API для вашего веб-приложения. Drupal - это PHP, который также делает его очень требовательным к памяти, ограничивая количество одновременных пользователей.
Так что, если Drupal так плох для этого, зачем его использовать?
Вы должны действительно использовать Drupal для того, что Drupal превосходит в - CMS. То, что я делал в прошлом с проектами, которым требовалось веб-приложение, - это использование Drupal для создания CMS вокруг веб-приложения. Создавать такие вещи, как блоги, списки контента и тому подобное. Я также создал модули для определения некоторых внутренних вещей, таких как определения схемы, и других вещей, в которых было целесообразно использовать Drupal, потому что это значительно облегчило мою разработку.
Вместо того чтобы использовать Drupal для создания REST API, необходимого для веб-приложения, я использовал Node.js для создания реального REST API и других проверок AJAX-вызовов, которые необходимо выполнить веб-приложению. Node.js превосходен в этом. Это очень быстро (время отклика всего 30 мс для списка объектов). Он также очень легкий, поскольку JavaScript на сервере использует асинхронные действия, сервер Node.js обычно может обрабатывать тысячи одновременно работающих пользователей, где PHP может обрабатывать, может быть, 100. В дополнение к этому - поскольку Node.js - это JavaScript, вы можете многократно использовать много код сервера и клиентской части. Вы можете буквально написать один и тот же код проверки, вместо того, чтобы реализовывать как клиентскую часть на JavaScript, так и серверную на PHP. Если вы собираетесь посетить Drupal con в Мюнхене через несколько недель - вам стоит посмотреть презентацию node.js,
Так что если вы разработчик, я бы настоятельно рекомендовал выполнить аналогичную настройку и использовать Drupal только для того, в чем он действительно хорош. Если вы хотите создать простое веб-приложение и не ожидаете большого количества пользователей, использование Drupal в качестве бэкэнда может быть хорошим вариантом, если это поможет вашему времени разработки.
Обновление Drupal 8
Таким образом, с выпуском Drupal 8 некоторые из вышеперечисленных остаются в силе, но не в той же степени, как раньше. Drupal 8 похож на Drupal 7, а не на легкий инструмент, такой как Node.js, Rails, Django и т. Д. Поскольку приложения JavaScript в основном используют различные сервисы, вам все равно следует подумать, является ли Drupal лучшим инструментом для этого.
С Drupal 8 многое улучшилось. Сервисы гораздо более нативные, с Symphony, который управляет запросом / ответом. Drupal 8 имеет много интересных возможностей с расширенным кэшированием и всеми замечательными функциями. Но даже несмотря на все достоинства Drupal 8, он все же намного тяжелее, чем приложения с небольшим весом. Трудно сказать, насколько успешный Drupal 8 может быть использован в качестве быстрого поставщика веб-сервисов.
Тем не менее, несмотря на все сказанное и сделанное, моя общая рекомендация остается прежней. Будучи разработчиком Drupal, Drupal легко использовать для всего, поскольку мы с ним знакомы. Он чувствует себя в безопасности, и Drupal можно использовать практически для чего угодно. Помните, что хотя можно использовать Drupal для чего угодно, это не значит, что это лучший инструмент для всего. Проведение тщательного анализа и понимание сильных и слабых сторон инструментов, которые вы хотите использовать в ИТ-проекте, всегда будет большой помощью и поможет вам избежать попадания в тупиковую позицию с результатом, который не соответствует вашим ожиданиям ,