将前端资产与管理资产分开
Separate frontend assets from admin assets
如果可能的话,我想要一些反馈。我有一个 rails 具有此文件夹结构的应用程序
rails
- app
-- controllers
--- admin
--- front
所以基本上我在 front
和 admin
命名空间上都有控制器。但是资产目前有默认设置,像这样
assets
- stylesheets
- javascripts
所以 application.scss
为前端和管理员加载所有 css
*
*= require_tree .
*= require_self
如何指定前端布局只加载前端所需的资产(而不是管理)和管理布局只加载管理资产而不加载前端资产?
您可以创建两个清单文件(而不是使用默认的 application.js
/application.scss
)并将它们包含在不同的布局中(一个用于 front
,一个用于 admin
).
例如,您可以使用以下文件夹结构:
assets
- javascripts
-- admin
-- front
- stylesheets
-- admin
-- front
- admin.scss
- front.scss
在每个 admin/front 文件夹中,您可以添加所需的特定 styles/scripts,然后确保您的清单文件如下所示(仅显示样式清单,脚本也是如此):
admin.scss
/*
* Manifest file for admin styles, to be compiled into admin.scss
*
*= require_self
*= require_tree ./admin
*/
front.scss
/*
* Manifest file for front styles, to be compiled into front.scss
*
*= require_self
*= require_tree ./front
*/
现在您必须创建布局(在 app/views/layouts
中):
admin.html.erb
<!DOCTYPE html>
<html>
<head>
... title and metas
<%= stylesheet_link_tag 'admin', media: 'all' %>
<%= javascript_include_tag 'admin' %>
</head>
<body>
... layout content
</body>
<html>
front.html.erb
<!DOCTYPE html>
<html>
<head>
... title and metas
<%= stylesheet_link_tag 'front', media: 'all' %>
<%= javascript_include_tag 'front' %>
</head>
<body>
... layout content
</body>
<html>
最后,您必须在 config/initializers/assets.rb
中添加要预编译的清单文件:
... some code
Rails.application.config.assets.precompile += %w(admin.scss front.scss)
Rails.application.config.assets.precompile += %w(admin.js front.js)
现在您只需使用所需的布局(admin.html.erb
或 front.html.erb
)
在呈现您的视图时。
如果可能的话,我想要一些反馈。我有一个 rails 具有此文件夹结构的应用程序
rails
- app
-- controllers
--- admin
--- front
所以基本上我在 front
和 admin
命名空间上都有控制器。但是资产目前有默认设置,像这样
assets
- stylesheets
- javascripts
所以 application.scss
为前端和管理员加载所有 css
*
*= require_tree .
*= require_self
如何指定前端布局只加载前端所需的资产(而不是管理)和管理布局只加载管理资产而不加载前端资产?
您可以创建两个清单文件(而不是使用默认的 application.js
/application.scss
)并将它们包含在不同的布局中(一个用于 front
,一个用于 admin
).
例如,您可以使用以下文件夹结构:
assets
- javascripts
-- admin
-- front
- stylesheets
-- admin
-- front
- admin.scss
- front.scss
在每个 admin/front 文件夹中,您可以添加所需的特定 styles/scripts,然后确保您的清单文件如下所示(仅显示样式清单,脚本也是如此):
admin.scss
/*
* Manifest file for admin styles, to be compiled into admin.scss
*
*= require_self
*= require_tree ./admin
*/
front.scss
/*
* Manifest file for front styles, to be compiled into front.scss
*
*= require_self
*= require_tree ./front
*/
现在您必须创建布局(在 app/views/layouts
中):
admin.html.erb
<!DOCTYPE html>
<html>
<head>
... title and metas
<%= stylesheet_link_tag 'admin', media: 'all' %>
<%= javascript_include_tag 'admin' %>
</head>
<body>
... layout content
</body>
<html>
front.html.erb
<!DOCTYPE html>
<html>
<head>
... title and metas
<%= stylesheet_link_tag 'front', media: 'all' %>
<%= javascript_include_tag 'front' %>
</head>
<body>
... layout content
</body>
<html>
最后,您必须在 config/initializers/assets.rb
中添加要预编译的清单文件:
... some code
Rails.application.config.assets.precompile += %w(admin.scss front.scss)
Rails.application.config.assets.precompile += %w(admin.js front.js)
现在您只需使用所需的布局(admin.html.erb
或 front.html.erb
)
在呈现您的视图时。