rails32版本下的AssetPipeline.doc

  1. 1、本文档共11页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Asset Pipeline 这个指南涵盖了在 Rails 3.1 引进的 asset pipling. 通过浏览这个指南,你将能: 理解 asset pipline 是什么和它是做什么的 合理的组织应用程序的资源 了解 asset pipline 的优点 为 pipeline 添加预处理器 用一个 gem 打包资源 endprologue. 什么是 Asset Pipline? asset pipline 是一个提供连结缩小或者压缩 JavaScript 和 CSS 资源的框架。它也添加了用其它语言编写这些资源的功能, 如 CoffeeScript, Sass 和 ERB。 在 Rails 3.1 之前这些功能都是通过第三方 Ruby 库添加进来的,如 Jammit 和 Sprockets. Rails 3.1 默认通过 Action Pack 和 依赖 sprockets gem 的 Sprockets 进行交互. 使 asset pipline 成为 Rails 的核心功能意味着所有的开发者都能从其强大的功能受益. 这些功能使用一个中心库,Sprockets, 将资源预处理,压缩和缩小。 这是 Rails 的 “fast by default” 策略的一部分,这个策略是 DHH 在 RailsConf 2011 概述中的主旨。 在 Rails 3.1 中,asset pipline 是默认开启的。它可在 config/application.rb 里被关闭,只需将以下这行放到应用程序类定义里: config.assets.enabled = false 你也可以在创建一个新应用程序的时候投递 —skip-sprockets 参数来关闭 asset pipline. rails new appname —skip-sprockets 你应该在所有的新应用程序中默认使用它,除非你有特殊的原因去避免使用 asset pipline. 主要功能 pipline 的第一个功能就是连结资源。这在生产环境非常重要,因为它可以避免浏览器为了渲染页面而不得不发送过多的请求。网页浏览器限制了并行请求的数量, 所以更少的请求能让你的应用程序加载更快。 Rails 2.x 介绍了将 :cache = true 放置到 javascript_include_tag 或 stylesheet_link_tag 方法的尾部能连结 JavaScript 或 CSS 资源。但这个技术有些不足。例如,它不能预先产生缓存和它不能显式调用由第三方库提供的资源。 从 3.1 版开始, Rails 默认将所有的 JavaScript 文件连结成一个主要的 .js 文件,和将所有的 CSS 文件连结成一个主要的 .css 文件。 你将可以在本指南后面学习到如何自定义管理这些文件的策略。在生产环境中, Rails 给每个文件名插入一个 MD5 指纹,以便文件被网页浏览器缓存。你可以通过修改指纹使缓存无效,这在你修改文件后会自动发生。 asset pipline 的第二个功能是资源的缩小或者压缩。对于 CSS 文件,是通过去除空格和注释来实现的。对于 JavsScript, 会有更多的复杂过程。你可以从选项中选择一套构件或者指定你自己的。 asset pipline 的第三个功能是它能你使用更高级的语言来编写资源,然后预编译成实质的资源。默认支持的语言包括 CSS 的 Sass,JavaScript 的 CoffeeScript 和可用于所有资源的 ERB. 什么是指纹识别和为什么我们要关心 指纹识别是一项使一个文件的名字根据文件的内容而定的技术。当文件的内容改变了,文件名也会变。 这提供了辨别两个版本的文件是同一个文件的方法,即使是跨越不同的服务器和部署日期。 当一个文件的名字是唯一的并且基于它的内容, HTTP 头部可以被设定为在任何地方缓存(无论是在 CDNs, 在 ISPs, 在网络设备里,或者是在网页浏览器里)去保存它们自己内容的副本。当内容更新了,指纹识别也会变更。这会引起远端客户端发出一个新的请求获得内容。这一般 被叫做 清除缓存. Rails 用于指纹识别的技术是将内容的 hash 插入到名字里,通常在尾部。例如 global.css CSS文件可以被重命名为一个带有它的内容的 MD5 digest: global-908e25f4bf641868d8683022a5b62f54.css 这是 Rails asset pipline 所使用的策略。 Rails 的旧策略是为每个资源附加一个以日期为基础的查询字符串,这些 asset 都会与一个内建的 helper 关联. 原先文件生成的代码看起来像这样: /stylesheets/global.css?1

文档评论(0)

gangshou + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档