odi*_*ity 15 ruby-on-rails sprockets asset-pipeline
我是Rails的新手,无法找出组织资产的最佳方法.这个问题的目的是收集我的想法,征求意见,并随着时间的推移进化文档 - 也许有一天它可能是一个Rails指南.(Rails Wiki似乎已经死了.)这将作为新手概念化的辅助,而不是参考,因此它将仅限于最常见的场景.
资产管道 - 概述
有关管道的目的,好处和内部工作方式的详细信息,请从本指南开始:http://guides.rubyonrails.org/asset_pipeline.html 我将仅在此总结与我的目的相关的位.
管道必要的原因是:
管道的额外好处是:
资产管道 - 默认文件系统布局
app|lib|vender/assets/ - 用于将由管道处理的文件.app/assets/ - 专门针对您为应用程序创建的文件.lib/assets/ - 专门针对您为跨多个应用程序共享而创建的文件.vendor/assets/ - 专门用于其他人创建的文件,例如jQuery和Twitter Bootstrap(虽然它们经常由gem提供,而不是直接导入/ vender).public/ - 此处的文件保留原样,可直接从您的Web应用程序的根路径('/')获取.资产管道 - 默认文件和行为
应用程序/资产/ JavaScript的/ application.js中
//= require jquery
//= require jquery_ujs
//= require_tree .
Run Code Online (Sandbox Code Playgroud)
应用程序/资产/样式表/ application.css
/*
*= require_self
*= require_tree .
*/
Run Code Online (Sandbox Code Playgroud)
public/404.html
public/robots.txt
...
的Gemfile
...
gem 'jquery-rails'
...
Run Code Online (Sandbox Code Playgroud)
以下是资产管道编译器使用新Rails应用程序的默认设置执行的操作:
application.js,application.css和所有非JS/CSS文件(图片,大部分).application.js包含一个清单,它包含两个jquery文件(存在于jquery-rails gem中,而不是在你的应用程序中),然后通过提取app/assets/javascripts/树中的所有文件require_tree ..通过此清单包含的所有文件将被编译到一个名为的文件中application-[the MD5 hash].js,并放入其中public/assets/.application.css包含一个清单,通过拉入app/assets/stylesheets/树中的所有文件require_tree ..该required_self指令告诉编译器在application.css文件本身中包含任何CSS内容,并按指令的顺序.因此,在这种情况下,CSS in application.css将出现在其余部分之上.通过此清单包含的所有文件将被编译到一个名为的文件中application-[the MD5 hash].css,并放入其中public/assets/.public/assets/,目录结构完好无损.例如,app/assets/images/categories/computers.png最终会以public/assets/categories/computers-[the MD5 hash].png.概念化资产内依赖性方案
图片
图像之间没有依赖关系,它们总是独立存在.
样式表
application.css.scss需要'a'和'b'的sprockets指令,它们将在合并之前在不同的上下文中编译.要共享变量和mixin,您必须使用Sass导入指令从'b'导入'a',反之亦然.(参见下面的关键概念1)JavaScript的
帮助行为 - Rails视图
去做
助手行为 - 萨斯
去做
最佳实践 - 关键概念
最佳实践 - 通用资产方案
去做
最佳实践 - 一般有用的默认值摘要
去做
**问题**
| 归档时间: |
|
| 查看次数: |
2148 次 |
| 最近记录: |