我是Rails的新手,并且无法找出组织资产的最佳方式。这个问题的目的是收集我的想法,征求意见,并随着时间的推移演变文档 - 也许有一天它可能是一个Rails指南。 (Rails Wiki似乎已经死了。)这对新手的概念化有帮助,而不是参考,因此它将局限于最常见的场景。
资产管道 - 概述
有关管道的目的,好处和内部工作方式的详细信息,请从本指南开始:http://guides.rubyonrails.org/asset_pipeline.html我只会在此总结与我的目的相关的位。
管道必要的原因是:
管道的其他好处是:
资产管道 - 默认文件系统布局
app|lib|vender/assets/
- 用于将由管道处理的文件。app/assets/
- 专门针对您为应用程序创建的文件。lib/assets/
- 专门针对您为跨多个应用程序共享而创建的文件。vendor/assets/
- 专门针对其他人创建的文件,例如jQuery和Twitter Bootstrap(虽然它们经常由宝石提供,而不是直接导入到/ vender中)。public/
- 此处的文件保留原样,可直接从您的网络应用的根路径(' /')获取。资产管道 - 默认文件和行为
应用程序/资产/ Javascript角/ application.js中
//= require jquery
//= require jquery_ujs
//= require_tree .
应用程序/资产/样式表/ application.css
/*
*= require_self
*= require_tree .
*/
公共/ 404.html
公共/ robots.txt的
...
的Gemfile
...
gem 'jquery-rails'
...
以下是资产管道编译器使用新Rails应用程序的默认设置执行的操作:
application.js
,application.css
和所有非JS / CSS文件(主要是图像)。application.js
包含一个清单,其中包含两个jquery文件(存在于jquery-rails gem中,而不是在您的应用程序中),然后通过{{1提取app/assets/javascripts/
树中的所有文件}}。通过此清单包含的所有文件将被编译到名为require_tree .
的单个文件中,并放在application-[the MD5 hash].js
中。public/assets/
包含一个清单,可通过application.css
提取app/assets/stylesheets/
树中的所有文件。 require_tree .
指令告诉编译器在required_self
文件本身中包含任何CSS内容,并按指令的顺序包含。因此,在这种情况下,application.css
中的CSS将显示在其余部分之上。通过此清单包含的所有文件将被编译到名为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
中有sprockets指令,则需要' a'和' b',它们将在合并之前在不同的上下文中编译。要共享变量和mixin,您必须导入' a'来自' b'反之亦然,使用Sass导入指令。 (参见下面的关键概念1.)的JavaScript
帮助行为 - Rails视图
TODO
帮助行为 - Sass
TODO
最佳做法 - 关键概念
最佳做法 - 常见资产情景
TODO
最佳做法 - 一般有用的默认值摘要
TODO
**问题**