CoffeeScript?TypeScript?還是JavaScript?

jopen 10年前發布 | 29K 次閱讀 JavaScript

英文原文: CoffeeScript? TypeScript? How about JavaScript?

        譯/臘八粥

        請注意本文只是我的偏見,我努力地理解借助 CoffeeScript 或 TypeScript 之類的編譯器寫 JavaScript 代碼的理由。靜態編譯、強類型語言和框架,我有著這些流行的、豐富的背景。我的上一份工作就是使用 TypeScript,因為我不得不使用。那是一段不快樂的時光,我將因此而離開。

        我很幸運地把自己從這種困境和負擔中釋放出來,正在完全地使用 JavaScript 編寫代碼,我對此感到格外高興!如果我對于這種變化的熱情還不夠明顯,請讓我向你保證,我現在更開心了。有一點很重要,我不是在暗示靜態編譯或強類型語言 有什么錯誤,因為它肯定沒錯。它只不過不再是我的菜了。

        鑒于 JavaScript 的動態本性以及缺乏靜態類型檢查,我可能編寫著低質量代碼,充斥著 bug 卻不能在編譯時發現,對嗎?答案是毫不含糊的,不對!我從來不能這樣有動力、多產、富有表現和高效。我沒有編寫過最少 bug 的高質量代碼,也不能在發現 bug 后快速修復。或許你想知道,我是否在編寫風格統一的 JavaScript,它們遵循最佳實踐和風格,卻沒有編譯器?答案是,對的!我不是故意在這里鼓吹自己,而是要指出,靜態編譯的缺乏不一定會導致更多的 bug 和低質量的代碼。

        的確,有很多方法來確保 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

        — END —

                    <span id="shareA4" class="fl">                  
                        </span>
 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!