原文地址(source): http://innoarchitech.com/coffeescript-typescript-javascript/ javascript
請注意本文只是個人偏見,我努力地理解藉助CoffeeScript或TypeScript之類的編譯器寫JavaScript代碼的理由。靜態編譯、強類型語言和框架,我有着這些流行的、豐富的背景。個人上一份工做就是使用TypeScript,由於我不得不使用。那是一段不快樂的時光,我將所以而離開。 java
我很幸運地把本身從這種困境和負擔中釋放出來,正在徹底地使用JavaScript編寫代碼,我對此感到格外高興!若是我對於這種變化的熱情還不夠明顯,請讓我向你保證,我如今更開心了。有一點很重要,我不是在暗示靜態編譯或強類型語言有什麼錯誤,由於它確定沒錯。它只不過再也不是個人菜了。 web
鑑於JavaScript的動態本性以及缺少靜態類型檢查,我可能編寫着低質量代碼,充斥着bug卻不能在編譯時發現,對嗎?答案是絕不含糊的,不對!我歷來不能這樣有動力、多產、富有表現和高效。我沒有編寫過最少bug的高質量代碼,也不能在發現bug後快速修復。或許你想知道,我是否在編寫風格統一的JavaScript,它們遵循最佳實踐和風格,卻沒有編譯器?答案是,對的!我不是故意在這裏鼓吹本身,而是要指出,靜態編譯的缺少不必定會致使更多的bug和低質量的代碼。 typescript
的確,有不少方法來確保JavaScript代碼被正確地編寫、遵循推薦的風格和最佳實踐。更不要說編寫高質量JavaScript成爲了次日性,天然地,你傾向於遵循你學到的、一樣優秀的模式。你還應該老是編寫合適的單元測試,這是一種最佳實踐和另外一種應對bug的防護,有助於確保預期的功能。咱們不要忘了,合適的代碼審覈也是一種最佳實踐,應該去用。 數據庫
那麼,爲何要用這些編譯器,好處又是什麼呢?答案是,我也不知道。是否是應該有能夠編譯成Ruby和Python的RubyScript和PythonScript呢?在我看來,若是你不喜歡、或者不想編寫JavaScript代碼,那麼你可能就不該該作一名JavaScript開發人員。它是古怪的、不完美的語言?它絕對是,可是它一直在變得更好。大部分的怪癖和遺漏在ECMAScript Harmony【注1】中提出了,好比:ES.next。 瀏覽器
我認爲使用某種編譯器只有一個緣由,那就是,若是你是高級專家、JavaScript大拿,不喜歡原生JavaScript,只是想簡單快捷地作些東西。若是你不是剛纔提到的專家,那麼我真地相信你只是在傷害本身而逃避原生JavaScript。你幹嗎這麼問?答案是,JavaScript正變得無處不在,成爲莊重的、使人驚歎的語言。它已經融入了全部的web和移動環境、使用Node.js的服務器,還有數據庫(好比MongoDB),甚至最近的硬件級別的處理(好比arduino)。 服務器
我讀了不少博客、newsletter、書、文章、論文、文檔、MDN等與JavaScript相關的東西。它們都包含了用原生JavaScript編寫的代碼,我不多看到做者用CoffeeScript或相似語言呈現的代碼,在極少場合碰到這些代碼時,我會當即中止閱讀,由於我只對JavaScript、而不是它的其它版本感興趣。 框架
若是你曾經計劃、或者有興趣在工做中用到基於JavaScript的數據庫(好比MongoDB),那麼你須要知道如何編寫JavaScript。你不能用CoffeeScript來查詢MongoDB,也不能沒有預編譯就用 CoffeeScript 爲Node.js編寫基於服務器端的JavaScript,即便你有能力,也不能這樣作。 工具
在GitHub上,如潮水般涌來的、表面上有數百萬種的JavaScript資源庫和框架,該怎麼樣呢?大型的有jQuery、AngularJS、Underscore等等。我強烈推薦深刻學習JavaScript,這樣你不只可以閱讀和理解源代碼,還能夠調試它。是的,說到了調試,不論是你是在瀏覽器,仍是使用Webstorm爲Node.js調試JavaScript,都會涉及到原生JavaScript。 單元測試
我最後想指出的是與其餘人的協做(好比GitHub),或者找一份JavaScript工做室的工做。若是順利的話,掌握原生JavaScript的好處應該比較明顯。當你入職第一天走進嚴肅的JavaScript工做室、提出CoffeeScript編譯器的問題,你可以想象獲得這是什麼情景嗎?
重申,若是你是高級專家JavaScript大拿,那麼編譯器可能就是好的嗎?儘管如此,我懷疑你會不會成爲這樣的大拿,若是你由於青睞某種編譯器而避免學習、編寫原生JavaScript的話。若是你擔憂靜態檢查和風格,能夠嘗試一些構建工具(好比,Grunt、Gulp、Node、NPM等)。不少插件運行很是不錯。對於既定代碼,使用CoffeeScript或TypeScript是爲了查看編譯好的JavaScript,而後模擬原生代碼的輸出。不管怎樣,幫本身一個忙,優先掌握JavaScript。
注1:ECMAScript Harmony將會以「ECMAScript 6」發佈。http://zh.wikipedia.org/wiki/ECMAScript