我的回答适用于 Rails 3.1rc4,我不知道它是否与其他版本功能相同。
实际上,无论 .js 文件是否在 app/assets/javascripts/ 或 vendor/assets/javascripts/ 中,您都可以将所有 require 语句放入 app/assets/javascripts/application.js
像这样:
// this is in app/assets/javascripts/application.js
//= require modernizr-2.0
//= require jquery
//= require jquery_ujs
//= require jqueryui-1.8.12
//= require jquery.easing-1.3
//= require jquery.noisy
//= require jquery.jslide-1.0
//= require respond
//= require smoke
//= require_tree
我在这里包含了 require_tree,因为我有其他用于我的个人控制器的 javascript 文件(pages.js.coffee、users.js.coffee)和一个用于站点范围内容的通用文件(site.js.coffee)
同时这里是文件结构。
app/
├── assets
│ ├── javascripts
│ │ ├── application.js
│ │ ├── pages.js.coffee
│ │ ├── users.js.coffee
│ │ └── site.js.coffee
│ └── stylesheets
└── plugins
vendor/
├── assets
│ ├── javascripts
│ │ ├── jquery.easing-1.3.js
│ │ ├── jquery.jslide-1.0.js
│ │ ├── jquery.noisy.js
│ │ ├── jqueryui-1.8.12.js
│ │ ├── modernizr-2.0.js
│ │ ├── respond.js
│ │ └── smoke.js
│ └── stylesheets
└── plugins
这使我可以控制供应商库的加载顺序(这通常很重要),而不必担心我的内部 javascript,因为顺序通常不太重要。
更重要的是,我控制了一个常用文件中的所有 require 语句,我发现它既安全又干净。