`
jsntghf
  • 浏览: 2543444 次
  • 性别: 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

    Rails 6允许开发者同时使用两者,例如,对于简单的应用或不涉及复杂前端开发的部分,Assets Pipeline可能仍是一个可行的选择。同时,Webpacker也支持使用 Stimulus.js(一个轻量级的JavaScript控制器库)和Bootstrap...

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

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

    Laravel开发-laravel-assets

    1. **Asset Pipeline**:Laravel Assets提供了一个类似Rails的资产管道系统,允许开发者将多个JS或CSS文件合并成一个单一的文件,减少HTTP请求,从而提高网页加载速度。 2. **版本控制**:通过自动添加版本号到静态...

    Laravel开发-assets

    Laravel的资产管理功能是通过"Asset Pipeline"实现的,它允许开发者有效地组织、编译和优化这些资源,提高网站性能。 标题"Laravel开发-assets"指出,这个压缩包可能包含与在Laravel框架中处理静态资源相关的项目。...

    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 :使用...

    前端开源库-connect-assets-eco

    **前端开源库-connect-assets-eco** 是一个专为前端开发者设计的开源工具,它借鉴了Rails框架中的资产管道(Asset Pipeline)概念,旨在简化前端资源的管理和编译过程。在Web开发中,前端资源通常包括JavaScript、...

    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 ( ...

    Pipeline.zip

    使用代码编辑器(如Visual Studio Code或Sublime Text)打开`Pipeline.zip`解压后的文件,对所需修改的部分进行调整。修改完成后,将文件重新上传到Shopify后台,覆盖原有的主题文件。 5. **测试和预览**:在进行...

    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 的文件系统导入和需要工作...

    AssetPipeline:元和编译资源!

    5. **运行阶段**:在游戏运行时,Unity使用AssetPipeline加载和卸载资源,根据元数据快速定位资源,并使用编译后的代码执行游戏逻辑。 了解AssetPipeline的工作原理对于优化游戏性能至关重要。开发者可以通过调整...

    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 ...

Global site tag (gtag.js) - Google Analytics