在javascript闭包中包含一些资产需求

时间:2012-04-24 06:14:30

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

我有一个清单文件partials.js,其中包含以下内容:

//= require_tree ./partials

然后./partials/中的每个咖啡文件都包含以下内容:

$ ->
  # Rest of the code

是否有可能在清单中有这样的东西:

$(function () {
//= require_tree ./partials
});

并删除单个文件中的$ ->包装?

(目前这实际上并不起作用。代码被推到底部,上面需要js。)

2 个答案:

答案 0 :(得分:4)

我最近遇到了同样的问题,我最终做的是:

以你的清单为例:

$(function () {
  //= require_tree ./partials
});

我们可以把它变成一个看起来像这样的清单:

//= require ./head
//= require_tree ./partials
//= require ./tail

然后我们制作head.js

$(function (){ //need line to end with semicolon to trick preprocessor;

然后我们制作tail.js

});

诀窍是以一个带注释的分号结束head.js。另一方面,preprocesser将尝试注入一个分号,打破脚本,制作像这样的东西

$(function () {
;
  //rest of your code here
});

答案 1 :(得分:0)

另一种方法是创建load_my_asset.js.erb文件:

function loadMyAsset() {
    <%= Rails.application.assets.find_asset('path/to/asset').source %>
};

并在application.js

//= require load_my_asset

在开发和生产中都有效