Skip to main content
 首页 » 编程设计

ruby-on-rails-3之Rails 3.1 Assets 管道和手动订购的 Javascript 需要

2024年04月30日14yyy_WW

我正在尝试将现有应用程序转换为新的 3.1 Assets 管道布局,并希望包含许多必须按特定顺序排列的供应商文件(underscore.js 和backbone 是一对)。因此,我不能只使用 = require_tree . 来提取我的供应商文件(无需使用前缀重命名每个文件。恶心)。

以下内容位于我的 app/assets/javascripts/application.js 文件中:

//= require modernizr-1.7 
//= require jquery-1.6.1 
//= require underscore-1.1.5 
//= require backbone-0.3.3 
//= require_tree . 

我已经尝试了带/不带扩展、带/不带 require_tree 和带/不带相对路径的每种组合,但没有任何效果。我的所有供应商文件都位于 /vendor/assets/javascripts/ 中。

我觉得我很愚蠢,因为这似乎是一个如此明显的用例,(包括按顺序排列的特定文件在 JS 中很常见,不是吗?)我一定在做一些白痴的事情?

请您参考如下方法:

您有两种可能的结构:第一种和第二种。 通过以下两个示例,您将在 /assets/externals.js 公开一个包。 您可以 javascript_include_tag 此包,但也可以在 application.js 文件中需要它。

第一个

vendor/ 
├── assets 
│   ├── javascripts 
│   │   ├── externals.js 
│   │   ├── modernizr-1.7.js 
│   │   └── underscore-1.1.6.js 
│   └── stylesheets 
└── plugins 

文件 externals.js 包含:

//= require ./underscore-1.1.6.js 
//= require ./modernizr-1.7.js 

第二个

vendor/ 
├── assets 
│   ├── javascripts 
│   │   └── externals 
│   │       ├── index.js 
│   │       ├── modernizr-1.7.js 
│   │       └── underscore-1.1.6.js 
│   └── stylesheets 
└── plugins 

文件index.js包含:

//= require ./underscore-1.1.6.js 
//= require ./modernizr-1.7.js