0

我有 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)如果可能的话,我不想在窗口中放置任何东西

答案很简单:“使用裸选项。对于链轮,请参阅提交

4

2 回答 2

2

如果您想要对输出进行那种级别的细粒度控制,您将不得不自己编写 JavaScript,而不是让 CoffeeScript 为您完成。作为 CoffeeScript 的倡导者,我这么说:如果你使用它,你必须接受它的某些约定,例如为每个文件提供自己范围的包装器。您失去了连接文件的自由,以便在文件之间共享变量。

然而,值得一提的是

  1. 在 CoffeeScript 1.2.0+ 中,仅在必要时添加包装器。至少在您的第一个文件中,情况并非如此。(编辑:我错了;这个功能存在于 1.1.3 但在 1.2.0 之前消失了)
  2. $ = jQuery在函数的顶部在语义上等同于命名一个参数并作为该参数的值$传入。jQuery因此,您只需$ = jQuery要将 jQuery 放在每个 CoffeeScript 文件的顶部即可在noConflictmode 中使用。
于 2012-04-26T15:58:13.897 回答
-1

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

于 2012-04-26T14:41:37.770 回答