Каковы плюсы и минусы Asset-Pipeline/Turbolinks из Rails 4 для большого приложения?
Мы работаем над довольно большим и широким приложением. На сайте будет много разных разделов с очень разными требованиями к пользовательскому интерфейсу и поведением.
Заглядывая в будущее, Rails 4 разделил конвейер ресурсов на отдельный драгоценный камень, чтобы мы могли включить его или нет. То же самое может случиться с турболинками.
Вопрос, который я постоянно задаю себе в эти дни и не могу найти ответ: я должен использовать библиотеки тезисов в нашем проекте или нет?
Основным вопросом в моем размышлении является тот факт, что файловая стратегия "все в одном", вероятно, не будет работать, и нам придется использовать наборы файлов в различных частях приложения. Как турболинк будет реагировать на это, потому что он должен предполагать, что все js / css уже загружены? Преодолевают ли преимущества такой конфигурации сложность кода, подразумеваемую как конвейером, так и турболинками?
Я не ожидаю ответа Да / Нет, просто некоторые мнения по этому вопросу.
2 ответа
Оба являются действительными инструментами, которые не обязательно отменяют друг друга.
Turbolinks: позволяет загружать только тело страницы, таким образом заставляя его работать как AJAX-запрос (примером такого поведения может служить тот, который имеет Facebook).
Преимущества:
- Пропускает задачу браузера по полной визуализации новой страницы, тем самым устраняя время "пустой страницы", когда браузер не отвечает.
- Связано с предыдущим: если у вас есть поведение, на которое может повлиять загрузка новой страницы, например, при воспроизведении песни, турболинки не будут влиять на нее (см. Звуковое облако далее).
- Не перезагружает заголовок документа, поэтому не загружает одни и те же теги / контент дважды (если он одинаковый).
- Позволяет вам по-прежнему кэшировать содержимое просмотра на стороне сервера.
Недостатки:
- Перетащите, если теги заголовка действительно нуждаются в обновлении (новые js-файлы, новые css-файлы, обновление метатегов)...
- Если вы хотите использовать визуализацию на стороне клиента, это просто не инструмент для этого.
- Поведение по умолчанию для отключения поведения просто болезненно (использование классов css для отключения тегов привязки внутри раздела - это просто отстой).
На самом деле, это вопрос архитектуры вашего приложения, для чего оно предназначено.
Что касается конвейерной передачи активов, у меня были смешанные результаты, хотя я бы сказал, что у нее больше преимуществ, чем недостатков. В целом, инструменты предварительной обработки повышают производительность кросс-браузерной разработки, но не полагаются на нее в процессе производства. Но в случае конвейерной передачи активов, это также связано с тем, что вы хотите. Вы можете предварительно обработать SASS, Coffeescript, у вас есть отличные библиотеки, такие как компас или бурбон, но это также может увеличить вашу производительность. Итак, сравните его и посмотрите, должны ли они быть инструментами для вас.
Начнем с поста о недостатках: 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 пригодится, когда производительность на стороне сервера является проблемой.
- Надеюсь это поможет:)