Использование фреймворка вроде Backbone [закрыто]


24

В настоящее время у меня есть страница http://proctors.org/tv, которая управляется несколькими представлениями и вложениями с множеством jQuery и спаретированных спагетти JavaScript, и я бы хотел их очистить. Я понимаю, что новые фреймворки Javascript "MVC" используют шаблоны и не хранят строго все данные в DOM, как вы могли бы сделать с jQuery.

Я полагаю, что вы бы использовали что-то вроде Services и / или Views в качестве бэкенда, с Backbone на передней панели.

Есть проект Do для Backbone , и я помню, что в DrupalCon Denver был BoF или Session ...

Я надеюсь выяснить, стоит ли моего времени попытаться переписать это в новом фреймворке или просто почистить то, что у меня здесь есть.


4
Какой именно вопрос? Если вопрос «Кто-нибудь использует Javascript-фреймворки, такие как Backbone или Ember с Drupal?» тогда это опрос, и поэтому он не приветствуется на сайтах Stack Exchange. Если у вас есть конкретный вопрос об использовании одной из этих платформ JavaScript, задайте этот вопрос.
kiamlaluno

2
Я думаю, он спрашивает, существуют ли какие-либо фреймворки JavaScript для MVC, которые могут достаточно хорошо работать с собственной фреймворком Javascript в Drupal, что они приведут к меньшему количеству работы, чем простое развертывание его собственной. Мне кажется это справедливым - в некоторых случаях интимная интеграция с Drupal проходит прекрасно, для других - столько взлома, что было бы лучше просто переписать его с нуля - и, кажется, справедливо спросить людей, которые уже пробовали.
user56reinstatemonica8

Если вы хотите получить краткое руководство по запуску магистрали + drupal, вы можете посмотреть в моем блоге pixelite.co.nz/article/…
masterchief

Этот парень имеет хорошую отправную точку для позвоночника и Drupal pixelite.co.nz/article/…
Дэн Уолмсли

Ха, этот парень @masterchief из одного из ответов выше
Райан Прайс

Ответы:


18

Я использовал и 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 для чего угодно, это не значит, что это лучший инструмент для всего. Проведение тщательного анализа и понимание сильных и слабых сторон инструментов, которые вы хотите использовать в ИТ-проекте, всегда будет большой помощью и поможет вам избежать попадания в тупиковую позицию с результатом, который не соответствует вашим ожиданиям ,


Интересный подход. Вы используете drupal.org/project/nodejs или вы катите свой собственный интерфейс к Drupal DB?
mpdonadio

@googletorp, я работал с phusion passenger, и даже она не может работать лучше без кэширования и оптимизации сервера, и все языки сценариев на стороне сервера (кроме js) имеют значительные проблемы с блокировкой. Фактически я сам перешел с ruby ​​на php из-за некоторой специальной поддержки производительности в сообществе открытого исходного кода и чрезвычайной простоты использования. Nodejs всегда будет оставаться быстрее по сравнению с другими языками.
Минти

В любом случае, суть в том, что, поскольку Drupal предоставляет отличную инфраструктуру сервисных модулей, я подумал, что вы могли бы поделиться некоторыми знаниями об обработке данных на стороне клиента, особенно о сессиях и прочем.
Минти

@Minty В Nodejs есть вспомогательный пакет для интеграции с Drupal: github.com/mikl/node-drupal Фактическая обработка сеанса во многом зависит от того, как / что вы делаете. CORS и т. Д., Но я обычно посылаю Drupal session_id либо cookie, либо в заголовке запроса.
googletorp

Я только что прочитал эту замечательную документацию по Backbone github.com/kjbekkelund/writings/blob/master/published/… и подумал, что man backbone - отличный способ организовать ваш JavaScript и использовать его с обратными вызовами AJAX через систему маршрутизации. Почему бы не объединить его с Drupal, поскольку Drupal использует те же характеристики маршрутизации?
AlxVallejo

6

Недавно я начал разрабатывать свое первое приложение «позвоночник + друпал», и мне это очень нравится. Использование модуля Backbone вместе со службами, представлениями служб и необходимыми библиотеками. Проект довольно прост: создать управляемую каруселью контента из 6 страниц, которые отображают различные данные, вместе с дополнительным слайдером новостей, отображающим различное содержимое. Эта страница находится на разных экранах без взаимодействия с пользователем, поэтому требуется возможность обновления содержимого интерфейса без обновления браузера. Я подумал, что это идеально вписывается в приложение Drupal + Backbone, где Drupal управляет контентом, а магистраль управляет и синхронизируется с БД. Я интегрировал в jquery.cycle 2, который имеет потрясающий API и хорошо вписывается в стиль кодирования MVC.

Я могу понять, почему люди могут задирать нос при использовании Drupal в качестве бэкэнд-фреймворка, но для таких небольших приложений, как этот, Drupal легок и быстр . Я добился этого, начав с минимальной установки и тщательно подбирая модули contrib и core. Сейчас у меня около 50 модулей и чуть менее 150 строк пользовательского JS-кода для магистрали, и я почти закончил.

В конце концов, я попытаюсь зафиксировать это в качестве примера для базового модуля, так как в настоящее время нет примера, который показывает, как использовать представления в качестве коллекций и т. Д.

В заключение:

Стоит потратить на это время, если ваш проект хорошо подходит. На мой взгляд, с проблемами производительности, вызванными тяжестью Drupal, можно легко бороться с помощью механизмов кэширования, таких как Varnish, или даже ускоренного или основного кэширования страниц. Гибкость и скорость разработки от использования Drupal полностью перевешивают негативы для меня.


5

Основной ответ - да, некоторые люди используют его. Я не использовал его сам (пока не нашел подходящего проекта), но в настоящее время существует группа Drupal для него, и она также будет соответствовать Инициативе Web-сервисов и Context Core, которая является одной из инициатив Drupal 8 , Существует также сессия на DrupalCon Munich 2012, Backbone.js во внешнем интерфейсе .

Я не знаю, готов ли он к прайм-тайм, но, на мой взгляд, стоит создать доказательство концепции, если у вас есть что-то, что могло бы извлечь из этого пользу, и можете спроектировать сторону JS для интерфейса, а не для реализации , Это поможет изолировать любые изменения в бэкенде, если вы решите взять под залог Drupal по любой причине.


1
По сути: Stackexchange - это неправильное место, чтобы спрашивать об этом, поскольку на данный момент это такой особый случай. Прогуляйтесь по групповому обсуждению gdo
paul-m

MPD спасибо за ссылку на группу. Я, вероятно, буду следить там. Я провел несколько опросов в группах пользователей, которые действительно зависят от того, кто там находится. Все еще пытаюсь понять, когда мне следует начать вопрос о Stack Exchange. Я полагал, что у этого было бы больше чем один правильный ответ, таким образом это казалось подходящим.
Райан Прайс

3

Это может оказаться полезным: в нем показан пример преобразования скрипта на основе JQuery в магистральный скрипт. Очевидно, вам нужно будет загрузить backbone.js, либо как библиотеку, используя drupal_add_js, либо используя модуль.

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


Привет, Крейг, спасибо за ссылку, есть ли у вас ресурс, где он используется с Drupal в частности? Спасибо
Минти
Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.