Структура клиентского кода в Rails приложениях

У меня есть идея о том как распределять js/coffee файлы в Rails приложениях, тех что не SPA. Правда пока не пробовал его в бою) но тем не менее мне, он кажется перспективным.

Основной посыл в том чтобы браузер загружал и использовал только те скрипты, которые используются в рамках одного action. Точнее даже так один action — один js файл.

Как пример, один layout с применением этого подхода:

vendor — набор основных библиотек, которые скорее всего пригодятся на каждой странице. Для меня таковыми являются: jquery, moment.js, lodash.
base — это уже часть приложения, основные функции необходимые на большинстве страниц. Какие-то общие event handlers.
asset_path("#{controller_name}/#{action_name}") — код отвечающий за страницу, и необходимые для этой конкретной страницы vendor библиотеки.

Такая структура потребует хранить файлы в строгом порядке, но как мне кажется это больше плюс.

Например, страница редактирования Post, app/controllers/posts_controllers.rb и action edit, соответствует файл app/assets/javascripts/posts/edit.coffee.

У такого подхода есть как преимущества, так и недостатки. Начну с недостатков, их всё таки меньше:

  1. Обязательное создание файлов, для каждого action (те что рендерятс). Но, справедливости ради, большинство страниц, всё же и так требуют js. Так что, ничего страшного.

А вот преимущества на мой взгляд перевешивают недостатки:

  1. Нет даже намёка на глобальную область видимости. Это пожалуй самое крутое.
  2. Сокращение времени на парсинг и скриптинг браузером.
  3. Естественно меньший объём js, что означает высокую скорость загрузки.

Что думаете?)

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *