`
jsntghf
  • 浏览: 2476386 次
  • 性别: Icon_minigender_1
  • 来自: 苏州
社区版块
存档分类
最新评论

如何使用Assets Pipeline

阅读更多

Rails 3.1之前,所有资源文件都放在public的子目录下,如images、javascripts和stylesheets。有了asset pipeline后,这些资源文件被放在app/assets目录下。这个目录下的文件会被Sprockets这个中间件处理。它会包含在sprockets gem中。

 

并不是说assets不能放到public下了,它们仍可以并且会被服务器当作静态文件处理。若你想让你的资源文件在被请求前做一些预处理,那请把它们放到app/assets下。

 

生产环境下,默认会把这些文件预编译到public/assets下,以便提高服务器的处理效率。

 

当Rails生成scaffold或controller代码时,如果启用了coffee-rails,也会生成CoffeeScript文件和SCSS文件。

例如,如果生成了ProjectsController,同时也会生成app/assets/javascripts/projects.js.coffee和app/assets/stylesheets/projects.css.scss。

 

Asset存放路径

 

默认有3个:app/assets、lib/assets、vendor/assets


app/assets:被application拥有,如自定义的images,JavaScript文件或stylesheets
lib/assets:存放自己写的库需要的资源,或者是被多个applications共享的库
vendor/assets:存放外部实体需要的资源,如JavaScript插件的代码。

 

上面的路径被添加到了Sprockets的查找路径中。如果一个资源被请求,Sprockets会自动从3个路径中查找文件。如果找到同名的,则处理并向客户端返回。


可以在console中运行Rails.application.config.assets.paths查看路径。

 

向assets中添加自定义路径

 

在application.rb中添加:

 

config.assets.paths << File.join(Rails.root, 'app', 'assets', 'flash')

 

引用全部js和css

 

<%= stylesheet_link_tag "application" %>
<%= javascript_include_tag "application" %>

 

注意:这样做很危险!因为application会把assets目录及其子目录中所有的js或css全部引用进来,导致速度异常的慢。而且如果多个样式中定义了同名的样式,会相互覆盖,一定不要这样做。

 

但不幸的是application.html.erb中默认就是这样写的,强烈建议修改为只引用本controller相关的css或js。

 

单独引用某个controller的assets

<%= javascript_include_tag params[:controller] %> or
<%= stylesheet_link_tag params[:controller] %>
分享到:
评论

相关推荐

    从 Assets Pipeline 到 Webpack,Rails 6 的新前端方案们 - 过纯中1

    从 Assets Pipeline 到 Webpack,Rails 6 的前端方案们From assets pipeline to web pack,the R

    flux-rails-assets:助焊剂-轨道-资产宝石

    磁通-轨道-资产用于Rails Asset Pipeline的和与不使用CommonJS,而是在窗口上创建FluxDispatcher和EventEmitter以便轻松地使用Assets Pipeline。 与react-rails服务器端渲染效果很好。 助焊剂版本: 安装将此行添加...

    gakubuchi:使用Asset Pipeline进行静态页面管理

    学渊 Gakubuchi提供了一种使用Asset Pipeline管理静态页面(例如错误页面)的简单方法。安装将其放在您的Gemfile中: gem 'gakubuchi' 使用以下命令运行安装生成器: rails g gakubuchi:install 或指定静态页面的...

    gulp-assets-pipeline

    使用gulp-starter编译的演示: : (在分支上查看文件) 特征 CSS: (缩进,scss或两者兼有) Libsass(node-sass)用于超快速编译 自动前缀 JS:带和模块化ES6 异步要求 多个捆绑 共享模块 源地图 HTML :使用...

    requirejs-grails-asset-pipeline

    Grails requirejs-grails-asset-pipeline是一个插件,为 asset-pipeline 静态资产管理插件提供 RequireJS 优化器支持。 它允许您优化依赖于 Grails 插件中定义的模块的 RequireJS 模块。 有关如何使用资产管道的更...

    asset-pipeline:NodeJS 的资产管道

    要开始使用npm安装 Asset Pipeline: npm install assets-pipeline 然后您需要配置您的应用程序以使用该模块: ... var astppl = require ( 'asset-pipeline' ) ; astppl . set_app ( app ) ; ... app . use ( ...

    Node.jsMVC框架COKE.js.zip

    Assets management (something like assets pipeline in Rails). COKE uses a YAML file to manage all the assets. You can group them, specify which assets to be used in the action view. On production they...

    sass-asset-pipeline:SASSCompass Asset-Pipeline JVM模块

    SASS资产管道感动:该项目已移动到主资产管道仓库的一个子项目 sass-asset-pipeline:2.3.0是一... 先前的sass-asset-pipeline系列使用0.7.x用法只需在您的资产文件夹中创建scss或sass文件。认为要做修复指南针精灵生成

    rails-assets-sinatra:那是

    在Sinatra中使用Rails资产 这是一个最小的演示应用程序,展示了如何在 Sinatra ...gem 'sinatra-asset-pipeline' , require : 'sinatra/asset_pipeline' gem 'uglifier' gem 'slim' source 'https://rails-assets.org

    stylus-asset-pipeline:为 Grails 的资产管道静态资产管理插件提供 Stylus 支持

    Stylus Grails 资产管道Grails stylus-asset-pipeline是一个插件,它为资产管道静态资产管理插件提供支持。 大部分是从复制的有关如何使用资产管道的更多信息,请访问。 通过模拟 Node.js 的文件系统导入和需要工作...

    Simplygon SDK LOD生成工具

    The Simplygon SDK provides powerful methods to optimize 3d assets, which can easily be im- plemented and integrated into your 3d asset pipeline. At the very core, the optimization can be divided into ...

    fotoramajs:Ruby on Rails 的 Fotorama

    这是一个打包器,它允许您在 Rails Assets Pipeline 中通过 RubyGem 简单地安装和维护 Fotorama。 在开发中它将使用本地副本,在生产中它将使用 CDN。 Fotorama 由创建和维护。 安装 将fotoramajs gem 添加到...

    KUBIKOS – 3D Cube World v1.2

    KUBIKOS - Cube World is high quality, extensive modular assets pack which includes more than 450 Unique assets. With KUBIKOS world you can build all kinds of interesting, innovative and fun game ...

    ember-asset-pipeline:JVM Asset-Pipeline Ember模块,可编译把手以嵌入运行时

    灰烬资产管道 感动:该项目已移动到主资产管道仓库的一个子项目概述JVM ember-asset-pipeline是一个插件,它为Ember.js到资产管道提供了把手模板预编译器支持。 当前Ember版本:1.7.0 有关如何使用资产管道的更多...

    modernizr-rails:通过 Rails 3.1 资产管道包含 Modernizr.js 库的 Gem 包装器

    这个 gem 与来自的最后一个标记发布版本捆绑在一起,它由 Rails Assets Pipeline 自动为您缩小。 如果您需要自定义功能检测测试,请考虑本 README 中的部分。 安装 导轨 3.x 将以下内容添加到 Gemfile 中的assets...

    #GDC2017 Photogrammetry for Games

    For studios, leveraging photogrammetry well requires planning, the right tools, and a carefully created pipeline to ensure that the final in-game assets achieve the quality and vibrancy of the ...

    go-rails-template:在Ruby On Rails中构建大型Web应用程序的模板。 专注于扩展,性能和最佳实践

    一般信息Ruby版本: ruby 2.6.3 滑轨版本: rails 5.2.3 数据库: postgresql特征Rubocop配置代码气候配置基本的身份验证设置通过渲染视图模板在Assets Pipeline中支持Javascript ES6 带有页面特定Javascript 使用更...

    go_rails_template:在Ruby On Rails中构建大型Web应用程序的模板。 专注于扩展,性能和最佳实践

    一般信息Ruby版本: ruby 2.6.3 滑轨版本: rails 5.2.3 数据库: postgresql特征Rubocop配置代码气候配置基本的身份验证设置通过渲染视图模板在Assets Pipeline中支持Javascript ES6 带有页面特定Javascript 使用更...

    roots-js-pipeline:sprockets-y js为根构建扩展

    extensions : [ js_pipeline ( files : " assets/js/** " , out : ' js/build.js ' , minify : true )] 用法 此扩展名提供了一种方法,可向其传递要包含在项目中的javascript文件列表,允许您选择性地连接,缩小和/...

    POLYGON – Western Frontier Pack v1.2

    Key Features - 329 unique assets with x4 alternative ...- Supports Universal Render Pipeline (URP) - URP Guide Here - Characters are setup to work with Mecanim (no animations included in this pack)

Global site tag (gtag.js) - Google Analytics