免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2672 | 回复: 0
打印 上一主题 下一主题

如何使用Assets Pipeline [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2011-11-21 16:16 |只看该作者 |倒序浏览
如何使用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中添加:



Ruby代码
  1. 1.config.assets.paths << File.join(Rails.root, 'app', 'assets', 'flash')  
  2. config.assets.paths << File.join(Rails.root, 'app', 'assets', 'flash')
复制代码
引用全部js和css



Ruby代码
  1. 1.<%= stylesheet_link_tag "application" %>   
  2. 2.<%= javascript_include_tag "application" %>  
  3. <%= stylesheet_link_tag "application" %>
  4. <%= javascript_include_tag "application" %>
复制代码
注意:这样做很危险!因为application会把assets目录及其子目录中所有的js或css全部引用进来,导致速度异常的慢。而且如果多个样式中定义了同名的样式,会相互覆盖,一定不要这样做。



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



单独引用某个controller的assets


Ruby代码
  1. 1.<%= javascript_include_tag params[:controller] %> or  
  2. 2.<%= stylesheet_link_tag params[:controller] %>  
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP