前端处理静态资源文件连接、压缩、缓存、预编译高级语言的框架Asset Pipeline

Asset Pipeline 提供了用于连接、简化或压缩 JavaScript 和 CSS 静态资源文件的框架。有了 Asset Pipeline,我们还可以使用其他语言和预处理器,例如 CoffeeScript、Sass 和 ERB,编写这些静态资源文件。应用中的静态资源文件还可以自动与其他 gem 中的静态资源文件合并。例如,与 jquery-rails gem 中包含的 jquery.js 文件合并,从而使 Rails 能够支持 AJAX 特性。

Asset Pipeline 是通过 sprockets-rails gem 实现的,Rails 默认启用了这个 gem。

主要特性

Asset Pipeline 的特性之一是连接静态资源文件,目的是减少渲染网页时浏览器发起的请求次数。Web 浏览器能够同时发起的请求次数是有限的,因此更少的请求次数可能意味着更快的应用加载速度。

Sprockets 把所有 JavaScript 文件连接为一个主 .js 文件,把所有 CSS 文件连接为一个主 .css 文件。后文会介绍,我们可以按需定制连接文件的方式。在生产环境中,Rails 会在每个文件名中插入 SHA256 指纹,以便 Web 浏览器缓存文件。当我们修改了文件内容,Rails 会自动修改文件名中的指纹,从而让原有缓存失效。

Asset Pipeline 的特性之二是简化或压缩静态资源文件。对于 CSS 文件,会删除空格和注释。对于 JavaScript 文件,可以进行更复杂的处理,我们可以从内置选项中选择处理方式,也可以自定义处理方式。

Asset Pipeline 的特性之三是可以使用更高级的语言编写静态资源文件,再通过预编译转换为实际的静态资源文件。默认支持的高级语言有:用于编写 CSS 的 Sass,用于编写 JavaScript 的 CoffeeScript,以及 ERB。

备注:

sprockets:(sprockets | RubyGems.org) Sprockets 是一个 Ruby 库,用来检查 JavaScript 文件的相互依赖关系,用以优化网页中引入的js文件, 以避免加载不必要的js文件,加快网页访问速度。这个现在貌似是rails工程默认自带gem,记不太清了, 足见重要性。但是我在使用中发现有时候会跟bootstrap的js库发生冲突,主要是版本问题,有使用的小伙 伴需要注意一下。

知乎上关于前端开发和部署问题的讨论:https://www.zhihu.com/question/20790576

Asset Pipeline中文网:https://ruby-china.github.io/rails-guides/asset_pipeline.html

前端工程与性能优化:https://github.com/fouber/blog/blob/master/201405/01.md#%E9%9D%99%E6%80%81%E8%B5%84%E6%BA%90%E7%AE%A1%E7%90%86%E4%B8%8E%E6%A8%A1%E5%9D%97%E5%8C%96%E6%A1%86%E6%9E%B6

CDN是什么?CDN有什么优势?http://blog.51cto.com/rainy0426/2057364

你可能感兴趣的:(框架)