Rails 3.1资产管道和手动订购的Javascript需求

内容来源于 Stack Overflow,并遵循CC BY-SA 3.0许可协议进行翻译与使用

  • 回答 (2)
  • 关注 (0)
  • 查看 (13)

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

以下是我的app/assets/javascripts/application.js文件中:

// =需要modernizr-1.7
// =需要jquery-1.6.1
// =需要下划线-1.1.5
// =需要backbone-0.3.3
// = require_tree。

我已经尝试了带有/带外扩展的每个组合,带/带出require_tree和带/不带相对路径,并且没有任何效果。我所有的供应商文件都在/vendor/assets/javascripts/

我觉得自己很愚蠢,因为这看起来像是一个明显的用例,(包括通过命令命名的特定文件对JS来说很常见,不是吗?),我必须做一些愚蠢的事情?

提问于
用户回答回答于

您可以按特定顺序要求每个文件,然后添加:

//= require_self

代替:

//= require_tree .
用户回答回答于

你有两种可能的结构:第一种和第二种。通过以下两个示例,您可以看到一个包/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

扫码关注云+社区