CoffeeScript 已死,CoffeeScript 萬歲!
正如你可能已經聽說的,JavaScript今年又準備推出一個新版本-ES6。這個名字源於它遵循了“ECMAScript”編碼標準的第六個重要版本:ECMA-262。在這個期待已久的釋出中,將包括一些對絕大多數JavaScript開發者處理問題大有裨益的新特性。
一些光芒四射的流行語……類、字串插值、生成器函式、箭頭函式、迭代器與for/of迴圈。這些都是具有重大意義的進步,但你可能也知道,這些特性中的許多或更多已經以CoffeeScript的形式存在了一段時間了,那是“一個被編譯成JavaScript的小型語言”。
我使用CoffeeScript編碼已經有一些年頭。一個開發者在構建一個複雜的應用程式時,他必須在能夠看到程式碼的同時,快速瞭解這段程式碼是做什麼的。CoffeeScript讓我在進行這些工作的時候比使用JavaScript時更加高效,我愛CoffeeScript,愛它因簡介的語法而來的生產力提升,也愛它因視覺雜亂而來的自由。
ES6中新加入了很多好東西。但是,像一個被用水衝得過淡的美式咖啡,它還遠沒有對我的口味。作為一個CoffeeScript的粉絲,我很高興聽到一些我喜歡的CoffeeScript新特性(如箭頭函式)現在被加入到了JavaScript中。然而,他們沒有使用相同的靈活性去實現,還有其他的尷尬事情在裡面。
CoffeeScript可以讓你這麼做:
solipsism = true if mind? and not world?
非常優雅是不是?在ES6中,你仍然不得不去處理那些畸形的東西,就像這樣:
if ((typeof mind !== "undefined" && mind !== null) && (typeof world === "undefined" || world === null)) { solipsism = true; }
這還沒完。在字串插值中使用反撇號(`)還只是普通的怪異,圓括號和花括號在任何時候都是必需的。甚至是在星期日。
許多第一次嘗試 CoffeeScript 的開發者會抱怨它的空格敏感特性。說實話,這傢伙在一開始也坑了我幾次。但我發現這些問題是很容易避免的,而且與這些小問題相比,更重要的是:我的程式碼能夠始終遠離分號,括號,·this·關鍵字的汙染,就像在 AI Gore 會議上的豐田普銳斯。
ES6 中很多新特性明顯受到 CoffeeScript 的啟發。所以為何不敢擁抱這些變化?當前形式的 JavaScript 是由委員會設計的教科書式的樣例軟體,充斥著委員們衝突的意見和強烈的分歧。幾年前,ES6 的開發前身:ES4,由於(委員們)在架構上的意見分歧和爭論不得不被放棄。在這個委員會模式中,這個軟體只有當每個人都厭倦了爭論時才能釋出。(委員會的)人們不情願地妥協了,認輸了,然後點了一份比薩慶祝他們的成果。
CoffeeScript 不會受到妥協的拖累。它是人們對於 JavaScript 能夠是什麼樣的有點烏托邦式的願景。這種狹窄的關注點大概是CoffeeScript獲得如此兩極分化名聲的原因吧。開發者對它要麼愛不釋手,要麼嗤之以鼻。如果你能夠就它的表面價值而接受它,CoffeeScript 就已經出色地完成了它的使命了。
這是一次對“標準”的背離,就像最初的亮彩色的 iMac 一樣,是對20世紀90年代時,那些清一色令人厭惡的灰褐色PC一次令人耳目一新的背離。一開始,人們強烈哭訴:“我沒有軟碟機怎麼活”。當然啦,每個人只有在經歷了1個月左右的時間後,才會猛然意識到他們根本不需要軟碟機。哦,好像你口袋裡平滑玻璃鏡面的 Android 手機或者 iPhone 也是這樣?我記得微軟的 Steve Ballmer 曾大聲宣稱 iPhone 只是個玩具,“不可能”有市場——因為它沒有所有‘正式’智慧手機應該有的鍵盤。標準只有在它們自己的方向上足夠純粹,才是好的。
記住它是至關重要的,除非你正在使用匯編語言程式設計或者機器語言本身,但任何程式語言都是一種抽象。我們討論的是,有多少抽象才是適量的,以及在我們的工作中應該有什麼作用與實際上的標準相干。這基本上可能由個人來決定的,對於每位開發人員與每個團隊來說,都沒有對與錯的答案。
對於我們的團隊來說,這個問題主要是圍繞在一個協同環境與我們想猛拉大馬車,這種所謂的技術活中來關注諸多開發人員的工作。可以有把握的說,我們有一個正在進行的討論。(諸多意見,對嗎?)在堅持既定的標準之間,我們的團隊正努力找到一種平衡,同時留有餘地的提供給開發人員來創新和選擇為他們工作的工具。
我想CoffeeScript可能會繼續伴隨著JavaScript,並推動JavaScript的創新。畢竟,這並不是一個非此即彼的命題。即使有一天CoffeeScript消失了,我想就像CoffeeScript一樣的超程式設計語言(Metaprogramming Language)也會有很高的價值,因為它讓程式設計師以一種新的方式去想象和理解他們的程式碼。這有助於提高每個人的藝術層次。
做一個善於交際的人,快來分享!
相關文章
- 【轉】Lisp 已死,Lisp 萬歲!Lisp
- coffeescript 1.8.0 documents
- 移動瀏覽器已死 應用萬歲瀏覽器
- [TEAP早期試讀]《深入淺出CoffeeScript》CoffeeScript中的OOPOOP
- 萬物始為先 coffeescript環境的搭建
- 什麼是CoffeeScript
- CoffeeScript 1.4.0釋出
- [TEAP早期試讀]《深入淺出CoffeeScript》CoffeeScript與Node.jsNode.js
- CoffeeScript入門實踐
- CoffeeScript?TypeScript?還是JavaScriptTypeScriptJavaScript
- CoffeeScript攻略1.1:嵌入JavaScriptJavaScript
- CoffeeScript攻略1.3:for迴圈
- CoffeeScript攻略3.7:拆分字串字串
- CoffeeScript攻略3.9:匹配字串字串
- [譯] 建構函式已死,建構函式萬歲!函式
- 初步瞭解CoffeeScript,第4部分: 在伺服器端使用CoffeeScript伺服器
- CoffeeScript 編碼風格指南
- CoffeeScript攻略3.8:字串插值字串
- CoffeeScript攻略3.1:重複字串字串
- CoffeeScript與Ruby的比較
- Javascript的鋼鐵戰衣:CoffeeScriptJavaScript
- 【翻譯】CoffeeScript 選譯筆記筆記
- CoffeeScript攻略4.9:篩選陣列陣列
- CoffeeScript攻略4.8:歸納陣列陣列
- CoffeeScript攻略3.4:查詢子字串字串
- CoffeeScript攻略1.2:比較範圍
- CoffeeScript攻略4.7:對映陣列陣列
- CoffeeScript攻略2.4:建立類變數變數
- CoffeeScript攻略2.5:鏈式呼叫物件物件
- CoffeeScript和Sass提高Web開發效率Web
- 用ES6代替CoffeeScript
- CoffeeScript攻略4.10:反轉陣列陣列
- CoffeeScript攻略3.10:生成唯一ID
- CoffeeScript攻略4.1:從陣列生成字串陣列字串
- CoffeeScript攻略2.1:克隆物件(深複製)物件
- CoffeeScript攻略4.6:打亂陣列元素陣列
- Windows下安裝NodeJS和CoffeeScript方法WindowsNodeJS
- CoffeeScript攻略4.3:取得陣列最大值陣列