资产管道控制咖啡脚本的关闭

时间:2012-04-26 13:03:16

标签: javascript coffeescript asset-pipeline

我有2个简单的咖啡脚本和资产管道。我获得了:

(function() {
  window.App.Test_widget = {...}
}).call(this);
(function() {
  $.widget("ui.Test_widget", window.App.Test_widget);
  $(document).ready(function() {...});
}).call(this);

但我想要1)合并闭包2)添加闭包参数

(function($) {
  var App;
  App.Test_widget = {...}
  $.widget("ui.Test_widget", App.Test_widget);
  $(document).ready(function() {...});
})(jQuery);

我不能谷歌一种实现这个的方式

UPD: 1)我不想将每个文件放在不同的闭包中。我想控制这个 2)如果可能的话,我不想把任何东西放在窗口中

ANSWER简单地说:“使用裸选项。对于链轮看commit

2 个答案:

答案 0 :(得分:2)

如果您希望对输出进行细粒度控制,则必须自己编写JavaScript,而不是让CoffeeScript为您执行此操作。我说作为CoffeeScript的拥护者:如果你使用它,你必须接受与它一起使用的某些约定,例如为每个文件提供自己的范围的包装器。如果你想要跨文件共享变量,你就失去了连接文件的自由。

然而,值得一提的是

  1. 在CoffeeScript 1.2.0+中,仅在必要时添加包装器。至少在你的第一个文件中,情况并非如此。 (编辑:我对此有误;此功能存在于1.1.3中但在1.2.0之前消失)
  2. 在函数顶部写$ = jQuery在语义上等同于有一个名为$的参数,并传入jQuery作为该参数的值。因此,您只需将$ = jQuery放在每个CoffeeScript文件的顶部,以便在noConflict模式下使用jQuery。

答案 1 :(得分:-1)

我认为你所描述的是延迟...你想在两次关闭完成后做些什么?如果是,那么请查看jQuery 1.5 deferred基础架构。