什么是 CoffeeScript?
CoffeeScript 是一門編譯到 JavaScript 的小巧語言. 在 Java 般笨拙的外表下, JavaScript 其實有著一顆華麗的心臟. CoffeeScript 嘗試用簡潔的方式展示 JavaScript 優(yōu)秀的部分呀闻。
CoffeeScript 的指導原則是: "她僅僅是 JavaScript". 代碼一一對應地編譯到 JS, 不會在編譯過程中進行解釋. 已有的 JavaScript 類庫可以無縫地和 CoffeeScript 搭配使用, 反之亦然. 編譯后的代碼是可讀的, 且經(jīng)過美化, 能在所有 JavaScript 環(huán)境中運行, 并且應該和對應手寫的 JavaScript 一樣快或者更快。
—— http://coffeescript.cn
為什么要用CoffeeScript?
- 更少,更緊湊,和更清晰的代碼;
- 通過規(guī)避和改變對 JavaScript 中不良部分的使用,只留下精華羔飞,讓代碼減少出錯率,更容易維護;
- 在很多常用模式的實現(xiàn)上采用了 JavaScript 中的最佳實踐;
- CoffeeScript生成的JavaScript代碼都可以完全通過JSLint的檢測。
什么是 ES6?
ECMAScript 6.0(簡稱ES6)是JavaScript語言的下一代標準优妙,已經(jīng)在2015年6月正式發(fā)布了。它的目標憎账,是使得JavaScript語言可以用來編寫復雜的大型應用程序套硼,成為企業(yè)級開發(fā)語言。
標準的制定者有計劃胞皱,以后每年發(fā)布一次標準邪意,使用年份作為版本。因為ES6的第一個版本是在2015年發(fā)布的反砌,所以又稱ECMAScript 2015(簡稱ES2015)
—— http://es6.ruanyifeng.com/#docs/intro
為什么替代雾鬼?
有很多人發(fā)文表達對于三種正在熱點上的編譯到 Javascript 的語言的看法(這三種分別是 ES6,CoffeeScript 和 TypeScript):
- Replace CoffeeScript with ES6
-
Don’t Replace CoffeeScript with ES6 Transpilers
- Goodbye CoffeeScript, Hello TypeScript
- CoffeeScripters, Have You Tried ES6 Yet?
可以看到 CoffeeScript 是一片唱衰的局面宴树,究其原因呆贿,也可以參考尤小右在知乎上的發(fā)言。
作者:尤雨溪
鏈接:https://www.zhihu.com/question/22323967/answer/21015056
來源:知乎
著作權歸作者所有森渐,轉載請聯(lián)系作者獲得授權做入。
曾經(jīng)用了大概一個禮拜左右,后來換回來了 同衣。個人覺得CS的一些語法簡化還是不錯的(尤其是array comprehension和arrow function)竟块,但同時還引入了一些semantic上的不同,掩蓋了很多JS本身的東西耐齐。比如用class掩蓋了構造函數(shù)和原型鏈浪秘,把JS的原型繼承硬套上了OO的外衣。還有一些不太明顯的行為上的差異埠况,比如variable shadowing(因為不用var所以在一個函數(shù)里沒法覆蓋同名的外層變量)耸携,implicit return(總是會返回最后一個expression的值)之類。另外就是有時候能省括號有時候又不能省... 這些問題導致我在寫CS的時候會無法遏制地在腦子里把寫下來的CS人工編譯成JS... 時間長了感覺比寫原生JS還累辕翰。
也就是說如果你深入了解并習慣了JS的各種細節(jié)之后夺衍,換到CS反而會帶來一層額外的思考負擔。這種情況在長期以JS作為主力語言的開發(fā)者身上比較常見喜命。相比之下沟沙,新手河劝、從其他語言轉過來的、或者是主力語言不是JS并且沒有也不想去了解JS各種坑的開發(fā)者會比較容易接受CS(我估計CS的一大部分用戶都是rails開發(fā)者)矛紫。
另一方面就是生態(tài)圈上的原因:CS的項目接到Pull Request的概率會低很多(寫CS的會愿意開JS項目的PR赎瞎,但寫JS的一般不樂意開CS項目的PR),不利于開源協(xié)作颊咬。
Ruby on Rails 開發(fā)框架默認用 CoffeeScript 务甥, 其為 RoR 開發(fā)帶來了效率和代碼可讀性的大幅提升,Coffeescript 編程類似 Ruby 語法喳篇,使其作為 Ruby on Rails 開發(fā)者來說入門難度不高敞临,但要熟練運用還需練習。正如上面尤小右所說的一樣杭隙,寫 CoffeeScript 的人絕大多數(shù)都是 Rails 開發(fā)者。
本人作為一個使用 Ruby 的開發(fā)者自然會接觸到 CoffeeScript因妙,不過對于這種簡化開發(fā)痰憎,為了少寫代碼而少些代碼的東西確實有些無法接觸,或許正如上面尤小右所說的一樣攀涵,我之前寫過很長時間的 Javascript(或者說 jQuery)铣耘,在寫 CoffeeScript 的時候有一層額外的思考負擔,感覺比寫原生 JS 還累(有類似想法的除了 CoffeeScript 之外以故,還有 Ruby on Rails 的模板引擎 slim 蜗细,所以一直堅守 Rails 自帶的模板 ERB)。所以當聽說 Ruby on Rails 已經(jīng)可以使用 ES6 代替 CoffeeScript 并且可以和 Assets Pipeline 一起使用怒详,就迫不及待的想要試一下炉媒,雖然相關的 Gem 包都還沒有發(fā)布 stable 版本。