原文:https://www.zhihu.com/question/22323967
回答1
javascript本身已經很簡單了,如果你作為一個前端,用Ruby的語法去寫javascript,給自己額外的人肉編譯負擔,哦呵呵,不是沒事找抽么?coffeescript、haml和sass之流,適合習慣Ruby、Python語法的程序員用。我打死也不會去用coffeescript和haml。至於sass,css里沒有變量,沒有可編程的寫法,后來借鑒sass而誕生的less和借鑒less而進化的scss,都可以很好地擴展css的功能。less和scss這兩個踩着sass肩膀上的產物,已被前端業界廣泛接受。
如果自我感覺很時尚喜歡用coffeescript隨便,跟風學習各種很潮的工具,不如把心思花在如何專研javascript上。
最近也開始在寫node程序。我想主力語言是javascript的Node.js開發者不喜歡coffeescript還是占多數的,更多的還是嘗嘗鮮,然后棄之。
回答2
視覺上清晰的代碼,不一定是執行效率最高的的代碼;運行效率高的代碼,則未必易於編寫和閱讀。比較一下 array.forEach 和 for 循環就可以發現這一點。
Coffescript 本身非常簡潔,編程時視覺上非常舒服,代碼清晰有效。這也是為什么 ES6 和 Swift 都有借鑒 Coffee 的地方。
Coffee 編譯出來的 JS 代碼可讀性差,但是那可都是 JS 最佳實踐的編程方式:性能最好,但是最啰嗦。
所以就看你自己的選擇了。 GitHub 內部都要求新的 JS 項目都用 Coffee 寫呢。
總體來說,視覺上和邏輯上的一致性是未來語言的方向,花括號,分號,甚至函數參數的括號,大部分都是給機器“看”的,不是給人看的。對人友好才是一個語言發展的方向。
很多反對 CoffeeScript 的 JS 程序員為 ES6 添加的各種特性歡呼,例如 Fat Arrow, splat, assignment destruction..., 並且堅定地實踐。其實這些都是 Copy 自 Coffee。ES6 用得越多,其實離 Coffee 就越近一步。
回答3
coffee在服務端node環境下的效率,與JS一樣快甚至更快。
coffee還有一個編譯的過程,更快的原因往往在於語法上的優化。也就意味着可以盡可能避免人為手寫JS時造成影響性能的結構 或 邏輯。
要用到項目中,需要考慮:
1. 團隊成員的學習成本(總不能自己充當人肉翻譯機吧)
2. 項目的維護成本(coffee發展的持續性,某天突然不commit了,后人維護就糟了個糕了)
另外,es6 與 coffee 有相似的地方,可能某個 風頭會蓋過 另一個。
來自 不是牛逼的node.js開發者 的一點感想。
