Как правильно связать большие ресурсы шаблона в файлы rab erb?
Я разрабатываю приложение rails, начиная с шаблона веб-архива. Я знаю, что добавление всей папки ресурсов в общую папку / папку свяжет ресурсы с моими представлениями, но это не будет использовать преимущества функций конвейера активов. Шаблон имеет множество плагинов и различных опций, и один обычно не использует все из них. Размер папки с активами составляет 30 МБ.
Я хотел поместить его в vendor/assets и использовать его с конвейером ресурсов, но это порождает две проблемы:
- Я бы обслуживал 30 МБ минимизированного кода и использовал бы его небольшой процент в своем приложении.
- Мне пришлось бы вручную переписать всю папку активов, чтобы использовать ссылки так, как этого хочет конвейер активов (
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') %>');