我真的不理解為什麼一些人總是黑 JavaScript。我喜歡 JavaScript,它不是萬能的,但它最接近於我們所期望的能“執行在任何地方” —— 關於這一點別和我提 Java。
使用 JavaScript,你可以編寫應用讓它執行在:
- 你的瀏覽器上(幾乎所有瀏覽器)。
- 你的手機和平板電腦(比如 React Native,Cordova)
- 你的桌面軟體(比如 electron 執行在 mac、linux 以及 windows)。
- 你的伺服器上即 node。
- 甚至在你的資料庫中(比如 mongo db)。
使用 JavaScript,你不需要下載一個 4GB 大小的 IDE 來建立一個 hello world 程式,你不需要等待 30 秒來編譯然後才能執行你的 app,你所需要的一切只是一個文字編輯器。
的確 JavaScript 有缺陷,但是,其他任何語言在適用性和靈活性方面都與 JavaScript 相距甚遠。
我對 JavaScript 工具、框架和庫的革新(和爆發)感到喜悅。我知道它可能讓學習者心累,但是這些新東西很好玩,而且,你沒必要學全所有的新東西啊。
我希望說,我們能停止在 JavaScript 之上創造“語言”,也停止在你的專案中使用這些新語言。我們已經有足夠多這些語言了:TypeScript、Elm、CoffeeScript 以及其他。我強烈推薦你不要在你的專案中使用這些新語言。
我將描述為什麼不要使用它們,但是首先,我想表達的是,我很欣賞這些創造,它們為我們的開發提供了多樣性的選擇,而且尤為重要的是,我非常感謝那些創造了偉大工具和“語言”的人。
我曾經是一名堅定的 CoffeeScript 粉。幾年前我決定在一個專案裡使用它,而隨著專案發展我很快意識到這是一個我曾經做出的最糟糕的選擇,隨後我花費了六個月的時間深入專案,把整個專案完全用 JavaScript 重寫了一遍。以下是為什麼使用 CoffeeScript 是個壞選擇的一些理由:
- 我需要額外的構建步驟來“編譯”它到 JavaScript,不是什麼大問題但有時候很煩。
- 它難以除錯,因為你在瀏覽器中看到的是編譯後的程式碼,與你的 CoffeeScript 原始檔中的內容不同 —— 大部分情況下,它的可讀性也很好,但是你還是需要在腦中轉換一下。
- 目前最大的問題是對任何加入團隊的新成員來說存在比較陡峭的學習曲線,因為他們必須要學習一門新的語言。
- 大部分線上的例子(99%)都是用 JavaScript 寫的。
- 團隊開始喪失一部分 JavaScript 技能。慢慢地,JavaScript 程式碼開始讀起來像是另一種語言,我們希望所見的一切都是 CoffeeScript 的。
- 我們不能完全跟上 JavaScript 的發展腳步,比如 ES6 —— 箭頭函式、解構等等。
- 我們不能直接將幾行程式碼放在 script 標籤裡執行來做一些簡單的測試,而如果我們要做測試,我們還得先用 JavaScript 來測,然後在測試之後將它“翻譯”回 CoffeeScript。
雖然我沒有深入使用 TypeScript 或 Elm,但我想它們應該也有類似的問題。
RE: TypeScript —— 非常酷的概念,我理解使用它的一些好處,但我們為什麼要強迫一個動態語言“表現得”像靜態語言那樣?C# 正絞盡腦汁地想要表現得更動態一些,而現在我們又在絞盡腦子地讓 JavaScript 表現得更靜態一些。搞什麼呀!!!
長話短說(TL;DR)。
- 別再黑 JavaScript,開始喜歡 JavaScript。
- 別在 JavaScript 之上搞其他語言。
- 擁抱 JavaScript 的動態特性。