Ruby on rails Rails资产管道和特定于管理员的javascript和css
rails的新手,我读到我应该将所有的JS/CSS放入Ruby on rails Rails资产管道和特定于管理员的javascript和css,ruby-on-rails,asset-pipeline,Ruby On Rails,Asset Pipeline,rails的新手,我读到我应该将所有的JS/CSS放入applications.JS/applications.CSS,并由资产管道处理。然而,我有相当数量的js/css,只有当管理员登录并添加/编辑页面时才使用 在我看来,在每一页上加载这些脚本和样式需要很大的开销。优化这一点的最佳方法是什么?我可以创建一个单独的资产管道,只在管理员登录时包含,或者只在需要的页面上包含 -编辑3- 以下内容将在生产环境中使用,但是您需要添加:config.assets.precompile+=['editing
applications.JS
/applications.CSS
,并由资产管道处理。然而,我有相当数量的js/css,只有当管理员登录并添加/编辑页面时才使用
在我看来,在每一页上加载这些脚本和样式需要很大的开销。优化这一点的最佳方法是什么?我可以创建一个单独的资产管道,只在管理员登录时包含,或者只在需要的页面上包含
-编辑3-
以下内容将在生产环境中使用,但是您需要添加:config.assets.precompile+=['editing.js','editing.css.scss']
到production.rb
-编辑2-
以下内容实际上不适用于生产。当我有时间的时候,寻找更好的解决方案
-编辑-
这就是我想到的设置。它工作正常,所以我想我是在问是否有任何理由我不应该这样做
application.html
!!!
%html
%head
%meta{:charset => "UTF-8"}
%meta{name: "Description", content: "base10 CMS"}
%title= "base10 CMS"
= stylesheet_link_tag "application", media: "all"
= javascript_include_tag "application"
= csrf_meta_tags
- if admin_signed_in?
= stylesheet_link_tag "editing", media: "all"
= javascript_include_tag "editing"
= cloudinary_js_config
%body
#container
#messages
- flash.each do |name, msg|
= content_tag :div, msg, :id => "flash_#{name}"
#content
= yield
application.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
*= require baseline
*= require bootstrap
*= require font-awesome
*= require_self
*/
@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
*= require_self
*/
@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
编辑.js
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
*= require baseline
*= require bootstrap
*= require font-awesome
*= require_self
*/
@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
*= require_self
*/
@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
application.css.scss
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
*= require baseline
*= require bootstrap
*= require font-awesome
*= require_self
*/
@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
*= require_self
*/
@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
编辑.css.scss
//= require jquery
//= require jquery_ujs
//= require bootstrap
//= require ckeditor/init
//= require cloudinary
//= require_tree ../../../vendor/assets/javascripts/.
/*
*= require baseline
*= require bootstrap
*= require font-awesome
*= require_self
*/
@import 'mixins.css.scss';
@import 'layout.css.scss';
@import 'pages.css.scss';
/*
*= require_self
*/
@import 'mixins.css.scss';
@import 'admin.css.scss';
@import 'forms.css.scss';
你的方法很好。需要记住的一点是,在生产中,
application.js
和application.css.scss
清单中的所有指令都将编译成一个文件(application.js
和application.css
)所以在大多数情况下不会有太多的开销。如果有很多额外的东西需要你来支持登录管理员,那么是的,你的方法很好,否则,我不必担心它,只需将所有内容留在应用程序中。*
清单。您可以在app/views/layouts中创建一个新的admin\u布局
,该布局在app/views/layouts中具有所需的css/js,将应用于admin视图查看布局了解更多信息这似乎是一种明智的方法。