К примеру, я создал свой js файл в директории assets/javascripts.
Чтобы мой js код адекватно работал с turbolinks, я делаю обработчик события $(document).on('page:load', myfunc).
Все хорошо.
Но чем больше становится проект, тем больше появляется "своих" js файлов.
И что, в каждом я должен прописывать этот обработчик события?
В общем, можно ли как-то упростить структуру клиентского кода, чтобы не писать все время $(document).ready, и $(document).on('page:load'...).
Robert: Чтобы не задавать таких вопросов хах) rusrails.ru/working-with-javascript-in-rails#turbolinks
Потому что эта эмитация PJAX. Каждая ссылка отправляется аяксом и возвращает js, который рендерит страничку. Поисковики плохо индексируют и вовсе не индексируют javascript странички.
Во вторых проблемы с обработчиками.
В третьих на фронтэнде ныне много логики, юзают фреймы и плагины и турболинкс будет конфликтовать.
В четвертых(не очень важно) но не все браузеры имеют push state.
ЗЫ За 2 года не в одном проекте не видел турболинки.
Robert: В рельсах как бывает, или вы делаете как положено, или вы боретесь с ним и проиграете. Поэтому удаляйте гем, уберите из application.js подключение и из layout тоже подключение
Каждая ссылка отправляется аяксом и возвращает js, который рендерит страничку.
Турболинкс работает не так, с индексацией поисковиками пробоем у него точно нет.
Если много логики на фронте, но не используется полноценный фреймворк (вроде ангуляра, эмбера, етц) - для таких случаев как раз и придуман турболинкс, который позволяет не парсить весь JS при каждом рендере страницы.
Например у меня на вполне обычном наборе (jQuery, Bootstrap, select2, Lightview2, DateTimePicker, MaskedInput, JQueryFileUploader) с турболинксом некоторое ускорение наблюдается визуально, особенно в девелопменте т.к. js не собран в один файл. Реально там выигрыш менее секунды, но страницы переключаются чуть плавнее. И чем больше зоопарк стороннего JS тем заметнее должен быть выигрыш от турболинкса.
С кривыми сторонними библиотеками действительно есть проблемы, но тут есть выход - использовать нормальные, благо их полно.
vsuhachev: Интересно. Видимо вы варите его по другому, в отличии от большинства сообщества, которое его выпиливает. По моему опыту, попытки сделать фронт с различными плагина успехом не увенчались, а дебажить js для человека, который не специализируется на js это трата сил и времени. Поэтому считаю(и далеко не я один) что нужно проводить профилактику в проекте, удаляя турболинки, чтобы не попасть в непонимание почему фронт не завелся как надо.