2011-06-13 101 views
7

CoffeeScript似乎是一種很有前途的新技術,我一定會在下一個項目中嘗試一下。將jQuery移植到CoffeeScript?

看起來jQuery可以很容易地用於CoffeeScript中 - 然而,將jQuery完全移植到CoffeeScript中(以相同的方式移植underscore)還是會浪費時間?

  • 從這樣一個港口可以享受什麼樣的優勢?
  • 除了可能的兼容性問題 - 可能這也導致問題(?即招數可能在jQuery的純JS這是不可能在CoffeeScript中使用)

回答

2

考慮到,coffescript只是另一種方式來編寫JavaScript代碼的帳戶,所以你可以在javascript中做的所有事情都可以在coffescript中完成,反之亦然...

說的很明顯,coffescript的唯一優點是一個更清晰的源代碼,它使得它更易於閱讀和編碼。缺點是,coffescript生成的javascript最可能會比目前更大......對於一個庫來說,這是一個相當大的問題......

所以,將一個coffescript版本作爲文檔文檔對於試圖理解jQuery是如何工作的人們來說,但它不會在主代碼中使用coffescript

9

下劃線僅作爲CoffeeScript功能和簡潔性的演示而移植。另外,帶註釋的CoffeeScript源代碼爲CoffeeScript中的那些熟悉者提供了更清晰的文檔。但official version仍然保持在純JS中,而不是從CoffeeScript編譯。

我認爲,同樣,將jQuery移植到CoffeeScript也是有意義的,這樣好奇的編碼人員才能夠享受帶註釋的源代碼,從而使庫的內部運作更加清晰。 jQuery受益於足夠強大的JavaScript程序員的關注,我懷疑將它移植到CoffeeScript會有什麼改進。

雖然我很樂意看到有人這樣做,但假設他們的代碼具有相同的行爲。我認爲適配器必須仔細考慮的一件事是如何將命名函數(function foo())移植到未命名函數(foo = function()),因爲CoffeeScript僅支持後者(由於在某些情況下跨瀏覽器不一致),並且兩者有不同範圍界定行爲。 JavaScript的==應該不是問題,因爲我可以在jQuery源代碼中找到它的唯一情況是x != null,這可以在CoffeeScript中使用x?完成。

5

正確Coffeescript是一個Javascript生成器。還要糾正源代碼可能更清晰。在js中絕對沒有任何技巧可以在Coffeescript中完成 - 如果需要的話,您可以放入純js中 - 而且我不確定我是否聽說過有人需要這樣做。如果你想放入Javascript,只需將表達式用反引號括起來:

`var foo = 42` 

我不同意代碼是「更大」。我會斷言代碼中的大部分額外字節是你應該一直插入的東西,但沒有 - 就像在你自己的代碼中添加命名空間的包裝。在某些情況下,Coffeescript有聰明的助手,將常用的使用模式分解出來,所以它們不會被一次性編碼。你可以通過讀取生成的js來找出這些是什麼。

就優點而言,我認爲這取決於您對代碼的看法。我很喜歡在類中封裝一個功能塊,並且討厭基於Javascript原型的對象定義。就宣告類和繼承而言,Coffeescript更多是Rubyish或Pythonesque。

我給你的建議是:1)獲得Trevor Burnham's Coffeescript book並體驗Coffeescript在實踐中的工作原理; 2)給出幾個簡單的例子來說明你的用例; 3)在熟悉語法之後,看看你喜歡它。

注意:Coffeescript Google Group是一個很好的資源,人們很快就會回答問題 - 很可能有人會遇到任何令你困惑的事情,並且會分享一個答案。 Trevor在他的書中列出了一整套資源。 (不,我沒有得到報酬給他在這本書上的道具:)

1

我知道我已經晚了兩年,但我移植了jQuery到CoffeeScript。該代碼旨在用於比較目的(jQuery的.js代碼反對.coffee代碼),因爲我沒有專注於添加註釋。

查看http://github.com/sharikul/jQuery-Coffee