在应用程序中包含Javascript文件的标准方法?

时间:2014-11-03 18:46:44

标签: javascript ruby-on-rails-4 asset-pipeline

假设我已经从网上某个地方提取了一个fancy.js文件,我应该采取哪些措施将其包含在我的Rails 4应用程序中?

现在我有以下

  1. 将fancy.js移至assets / javascripts文件夹
  2. 添加// =需要花哨的application.js资产管道
  3. ???
  4. 在1和2之后是否还有更多步骤,或者我开始时这样做是错误的吗?

2 个答案:

答案 0 :(得分:6)

看起来你走的是正确的道路。看看app/assets/javascripts/application.js

当您创建新应用(即rails new app_name)时,它应该已添加

//= require_tree .

只需添加对您希望包含的其他javascript文件的引用。

示例

//= require jquery
//= require jquery-ui
//= require jquery_ujs
//= require fancy
//= require_tree .

您可以在Adding Javascript File to Rails

上找到更多信息

答案 1 :(得分:3)

使用流行的第三方资产时,更好的选择是在Rubygems上查找资产的宝石版本。在这种情况下fancybox2-rails

gem 'fancybox2-rails', '~> 0.2.8'

使用链轮添加gem到application.js

//= require jquery
//= require fancybox

或者在脚本标记中:

<%= javascript_include_tag "fancybox" %>

和css:

/*
 *= require_self
 *= require fancybox
 *= require_tree .
 */

使用Gemified软件包的优势在于它更易于维护,并且您可以避免使用第三方代码污染代码库。缺点是gem可能比它封装的实际软件早几个版本。

如果您需要添加供应商文件,您可能应该将它们添加到lib/assets而不是app/assets,因为它可以明确区分实际驱动您的唯一应用程序的代码和依赖项。

另一件需要记住的事情是,资产通常是在生产环境中的部署时编译的(在Heroku上尤其如此)而不是每个请求(这将非常慢)。因此,您不能在sprockets指令中使用条件。