Как правильно связать большие ресурсы шаблона в файлы rab erb?

Я разрабатываю приложение rails, начиная с шаблона веб-архива. Я знаю, что добавление всей папки ресурсов в общую папку / папку свяжет ресурсы с моими представлениями, но это не будет использовать преимущества функций конвейера активов. Шаблон имеет множество плагинов и различных опций, и один обычно не использует все из них. Размер папки с активами составляет 30 МБ.

Я хотел поместить его в vendor/assets и использовать его с конвейером ресурсов, но это порождает две проблемы:

  1. Я бы обслуживал 30 МБ минимизированного кода и использовал бы его небольшой процент в своем приложении.
  2. Мне пришлось бы вручную переписать всю папку активов, чтобы использовать ссылки так, как этого хочет конвейер активов (javascript_include_tag "file" служить file.js). Конечно, я бы сделал это с помощью скрипта, но все равно кажется, что проблема, с которой кто-то должен был столкнуться в первую очередь.

Поскольку ни один из вендоров / ресурсов и общих / папок, кажется, не являются подходящим местом для этих файлов, я хотел бы выбрать лучший вариант (или способ заставить более поздние варианты работать лучше).

1 ответ

Решение

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

Я делаю это для приложения, которое содержит несколько "тяжелых" компонентов javascripts, которые расположены в разных областях моего приложения и не часто используются.

1- Организуйте свою файловую структуру

В app / assets / javascrips и app / assets / stylesheets создайте один каталог для каждой категории, которую мы собираемся создать. Примеры:

  • приложение / активы / javascrips / общие
  • приложение / активы / javascrips / админ
  • приложение / активы / javascrips / USER_ACCOUNT

2- Создайте свои манифесты

В app / assets / javascrips и app / assets / stylesheets создайте по одному файлу манифеста на категорию и включите в него соответствующий каталог

Файл app / assets / javascrips / common.js

//= require jquery
//= require_tree ./common

Файл приложения / assets / javascrips / admin.js

//= require_tree ./admin

Файл приложения / assets / javascrips / user_account.js

//= require_tree ./user_account

3- Добавьте свои манифесты в список прекомпиляций rails

Вы можете сделать это в файле config/application.rb, но когда он становится большим, предпочтительно создать файл инициализатора config / initializers / assets.rb

Rails.application.configure do
  config.assets.precompile += %w[common.js admin.js user_account.js]
end

4- Включите их в свои представления и макеты и настройте библиотеки javascript.

Импортируйте файлы ресурсов в макеты и представления. Хорошей идеей может быть создание нескольких макетов для разных областей вашего приложения, которые будут использовать файлы общих ресурсов. Методы для использования являются stylesheet_link_tag 'manifest_file' а также javascript_include_tag 'manifest_file'

И имейте в виду, что вам, возможно, придется сообщить своим подключаемым модулям javascript, что им нужно использовать уменьшенный файл при динамической загрузке файлов. Для них вы можете использовать файл конфигурации .js.erb. Пример:

Файл приложения /assets/javascrips/admin/plug-in_config.js.erb

PLUGIN.config('dynamicFileName', '<%= javascript_path('manifest_file') %>');
Другие вопросы по тегам