Каковы преимущества и недостатки Asset-Pipeline/Turbolinks из Rails 4 для большого приложения?

Мы работаем над довольно большим и широким применением. На веб-сайте будет много разных разделов с очень разными требованиями и поведением пользовательского интерфейса.

Взглянув в будущее, Rails 4 разделил конвейер активов на отдельный камень, чтобы мы могли его включить или нет. То же самое может произойти с турбонасосами.

Вопрос, который я задаю себе в эти дни и не могу найти ответ, должен: следует ли использовать библиотеки тезисов в нашем проекте или нет?

Основными проблемами в моем размышлении является тот факт, что стратегия файла "все-в-одном", вероятно, не сработает, и нам придется использовать пакеты файлов в разных частях приложения. Как турболинки будут реагировать на это, потому что он должен предположить, что все js/css уже загружены? Означает ли преимущества такой конфигурации сложность кода, подразумеваемую как конвейером, так и турбонасосами?

Я не ожидаю ответа Да/Нет, просто некоторые мнения по этому поводу.

Ответ 1

Оба являются действительными инструментами, которые не обязательно отменяют друг друга.

Turbolinks: позволяет загружать только тело страницы, что заставляет его работать как запрос AJAX (примером такого поведения будет тот, который есть у Facebook).

Преимущества:

  • Пропускает задачу браузера, полностью отображая новую страницу, тем самым устраняя "пустую страницу", когда браузер не отвечает.
  • Связано с предыдущим: Если у вас возникло поведение, которое может повлиять на загрузку новой страницы, например, скажем, воспроизведение песни, turbolinks не повлияет на нее (см. soundcloud next).
  • Не перезагружает головку документа, поэтому не загружает те же теги/содержимое дважды (если это то же самое).
  • Позволяет кэшировать содержимое просмотров на стороне сервера.

Недостатки:

  • Перетаскивание, если действительно необходимо обновить теги заголовков (новые файлы js, новые файлы css, обновление метатегов...)
  • Если вы хотите использовать рендеринг представления на стороне клиента, это просто не инструмент для него.
  • Поведение по умолчанию, чтобы отключить поведение, просто болезненно (используя классы css, чтобы отключить теги привязки внутри раздела, которые просто отстой).

На самом деле вопрос о том, что такое архитектура вашего приложения, в чем его цель.

О конвейерной обработке активов, у меня были смешанные результаты, хотя я бы сказал, что у нее больше преимуществ, чем недостатков. В целом, инструменты предварительной обработки повышают производительность разработки кросс-браузера, но не полагаются на нее в производстве. Но в случае конвейерной обработки активов он должен делать то же, что и вы. Вы можете предварительно обработать SASS, Coffeescript, у вас есть большие библиотеки, такие как компас или бурбон, но это также может увеличить производительность. Итак, сравните его и посмотрите, должны ли они быть инструментами для вас.

Ответ 2

Начнем с сообщения об ошибках: http://eviltrout.com/2013/01/06/turbolinks-and-the-prague-effect.html

Если это не проблема для вас: http://geekmonkey.org/2012/09/introducing-turbolinks-for-rails-4-0/

Чтобы обернуть все: Turbolinks улучшит загрузку вашей страницы значительно, если ваши страницы разделяют стиль JavaScript и CSS. PJAX пригодится, когда проблема на стороне сервера является проблемой.

  • Надеюсь, это поможет:)