2015-05-12 2 views
0

Я играю с приложениями с рельсами 4.2, и кажется, что он загружает все мои таблицы стилей для каждой страницы.rails 4.2 assets loading

Это правда? Как лучше, чем загружать для каждой страницы только соответствующие таблицы стилей?

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

С другой стороны, на странице у меня могут быть тонкие страницы, для которых нужно будет обрабатывать только несколько строк CSS, которые будут получать тоны файлов без всякой причины. Это также потребует от меня быть строгим и безопасным при выборе имен классов, чтобы не иметь столкновений и нежелательных переопределений.

Что относительно активов JS? Он действует одинаково? (Я думаю, что ответ за объекты изображения «ад нет!»)

+0

Да, это правда. Лучше использовать турбо-ссылки и кеширование. Есть способы обойти его (см. Ответы) – Yule

ответ

0

Да, в разработке вы увидите много файлов (все они) и в процессе их создания будут скомпилированы и профилированы в один файл ,

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

Одна проблема как вы указываете - область обзора. По моему опыту, лучше всегда применять соответствующие области при разработке. И в рельсах, использующих sass, действительно легко иметь красивый и аккуратный css.

То же самое касается javascript, но не для изображений, как вы указали.

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

Edit:
Да, и если вы новичок в рельсах, нужно учитывать, что turbolinks может причинить вам некоторые головные боли в начале Мессинг со страницей готовы в JS-файлов, прежде чем вы получите повесить его. Но это того стоит в конце.

0

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

Следующая чисто теоретически, если это вообще возможно, попробуйте и работать с дефолтов один CSS/JSS файла

Если вы абсолютно хотите обрезать его вниз, то вы можете. Ваш application.css файл манифеста (или JS), вероятно, включает в себя линию, такие как:

//= require_tree . 

, который говорит, требует все в этой директории. вы могли бы разделить это вниз так application.css требует только все, что в папке приложения (абсолютно необходимо знать):

//=require_tree ./application 

Затем добавить дополнительные файлы манифеста, например, для секции администратора, так что стили администратора/JS можно загружать только в случае необходимости в admin.JS

//=require_tree ./admin 

Затем в файле макета вы можете сделать

= stylesheet_link_tag "application", media: "all" 
= yield :additional_stylesheets 

А где вы хотите, чтобы эти дополнительные стили вы можете добавить их.

- content_for :additional_stylesheets do 
    = stylesheet_link_tag "admin", media: "all" 
end 

Примечание: это вызовет проблемы, если вы используете турбовинты. Note II: Вы можете добавить их в список прекомпиляции в application.rb:

config.assets.precompile += ['additional_manifests.css'] 

Вы можете изменить этот рабочий процесс, чтобы не включать в себя любой CSS вообще начать с и загружать только то, что вам нужно.