2012-04-26 43 views
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)我不想把任何東西窗口,如果有可能

答案很簡單:「用裸選項鍊輪看到commit

+0

不,你想要關閉。您有*其他一些具體問題*,可能有許多解決方案。請描述您實際遇到的問題,以便您可以找到一個* that *的好解決方案。 – yfeldblum 2012-04-26 14:56:38

+0

你可以提供一個你目前擁有的jsfiddle嗎?從描述中,我真的不清楚問題是什麼...... – dsummersl 2012-04-26 15:19:31

+1

puchu - 我已經設置了一個與您的問題相關的jsfiddle。你可以修改/評論它,以顯示你想要做什麼? http://jsfiddle.net/dsummersl/SeJK3/ – dsummersl 2012-04-27 15:39:02

回答

2

如果您希望對輸出進行細緻的控制,您必須自己編寫JavaScript,而不是讓CoffeeScript爲您完成。我認爲,作爲CoffeeScript的倡導者:如果使用它,則必須接受某些與之相伴隨的約定,例如爲每個文件提供自己範圍的包裝器。無論您想要如何在文件間共享變量,您都會失去拼接文件的自由。

值得一提的,但是,

  1. 在CoffeeScript的1.2.0+,包裝加只在必要時。至少在你的第一個文件中,情況並非如此。 (編輯:我弄錯了這一點;這個功能在1.1.3存在,但之前1.2.0消失)在函數的頂部
  2. 寫作$ = jQuery在語義上等同於具有名爲$jQuery作爲參數傳遞該參數的值。因此,只需在每個CoffeeScript文件的頂部放置$ = jQuery即可在noConflict模式下使用jQuery。
+0

0.我應該使用咖啡腳本1.中間人2.0.15.3,鏈輪2.0.3,咖啡腳本2.2.0:總是添加包裝。 2.每個閉包中的$ = jQuery非常不好 – puchu 2012-04-27 11:01:23

+1

向認真努力幫助您的人投下一票,並不是一種獲得答案的建設性方式。在CoffeeScript 1.2.0中生成封裝器是正確的,但它不在1.1.3中;現在回顧迴歸... – 2012-04-27 15:04:16

+1

請參閱https://github.com/jashkenas/coffee-script/issues/1774#issuecomment-5383393以獲取解釋。 – 2012-04-27 15:14:20

-1

我覺得你描述的是什麼延期......你想在兩次關閉結束後做些什麼?如果是這樣,然後看看jQuery 1.5 deferred基礎設施。

+0

我不希望這兩個封閉存在。我想控制關閉,但關閉控制我 – puchu 2012-04-26 14:48:06