CoffeeScript 已死,CoffeeScript 萬歲!
正如你可能已經聽說的,JavaScript今年又準備推出一個新版本-ES6。這個名字源于它遵循了“ECMAScript”編碼標準的第六個重 要版本:ECMA-262。在這個期待已久的發(fā)布中,將包括一些對絕大多數(shù)JavaScript開發(fā)者處理問題大有裨益的新特性。
一些光芒四射的流行語……類、字符串插值、生成器函數(shù)、箭頭函數(shù)、迭代器與for/of循環(huán)。這些都是具有重大意義的進步,但你可能也知道,這些特 性中的許多或更多已經以CoffeeScript的形式存在了一段時間了,那是“一個被編譯成JavaScript的小型語言”。
我使用CoffeeScript編碼已經有一些年頭。一個開發(fā)者在構建一個復雜的應用程序時,他必須在能夠看到代碼的同時,快速了解這段代碼是做什 么的。CoffeeScript讓我在進行這些工作的時候比使用JavaScript時更加高效,我愛CoffeeScript,愛它因簡介的語法而來的 生產力提升,也愛它因視覺雜亂而來的自由。
ES6中新加入了很多好東西。但是,像一個被用水沖得過淡的美式咖啡,它還遠沒有對我的口味。作為一個CoffeeScript的粉絲,我很高興聽 到一些我喜歡的CoffeeScript新特性(如箭頭函數(shù))現(xiàn)在被加入到了JavaScript中。然而,他們沒有使用相同的靈活性去實現(xiàn),還有其他的 尷尬事情在里面。
CoffeeScript可以讓你這么做:
solipsism = true if mind? and not world?
非常優(yōu)雅是不是?在ES6中,你仍然不得不去處理那些畸形的東西,就像這樣:
if ((typeof mind !== "undefined" && mind !== null) && (typeof world === "undefined" || world === null)) { solipsism = true; }
這還沒完。在字符串插值中使用反撇號(`)還只是普通的怪異,圓括號和花括號在任何時候都是必需的。甚至是在星期日。
許多***次嘗試 CoffeeScript 的開發(fā)者會抱怨它的空格敏感特性。說實話,這家伙在一開始也坑了我?guī)状?。但我發(fā)現(xiàn)這些問題是很容易避免的,而且與這些小問題相比,更重要的是:我的代碼能 夠始終遠離分號,括號,·this·關鍵字的污染,就像在 AI Gore 會議上的豐田普銳斯。
ES6 中很多新特性明顯受到 CoffeeScript 的啟發(fā)。所以為何不敢擁抱這些變化?當前形式的 JavaScript 是由委員會設計的教科書式的樣例軟件,充斥著委員們沖突的意見和強烈的分歧。幾年前,ES6 的開發(fā)前身:ES4,由于(委員們)在架構上的意見分歧和爭論不得不被放棄。在這個委員會模式中,這個軟件只有當每個人都厭倦了爭論時才能發(fā)布。(委員會 的)人們不情愿地妥協(xié)了,認輸了,然后點了一份比薩慶祝他們的成果。
CoffeeScript 不會受到妥協(xié)的拖累。它是人們對于 JavaScript 能夠是什么樣的有點烏托邦式的愿景。這種狹窄的關注點大概是CoffeeScript獲得如此兩極分化名聲的原因吧。開發(fā)者對它要么愛不釋手,要么嗤之以 鼻。如果你能夠就它的表面價值而接受它,CoffeeScript 就已經出色地完成了它的使命了。
這是一次對“標準”的背離,就像最初的亮彩色的 iMac 一樣,是對20世紀90年代時, 那些清一色令人厭惡的灰褐色PC一次令人耳目一新的背離。一開始,人們強烈哭訴:“我沒有軟驅怎么活”。當然啦,每個人只有在經歷了1個月左右的時間后, 才會猛然意識到他們根本不需要軟驅。哦,好像你口袋里平滑玻璃鏡面的 Android 手機或者 iPhone 也是這樣?我記得微軟的 Steve Ballmer 曾大聲宣稱 iPhone 只是個玩具,“不可能”有市場——因為它沒有所有‘正式’智能手機應該有的鍵盤。標準只有在它們自己的方向上足夠純粹,才是好的。
記住它是至關重要的,除非你正在使用匯編語言編程或者機器語言本身,但任何編程語言都是一種抽象。我們討論的是,有多少抽象才是適量的,以及在我們 的工作中應該有什么作用與實際上的標準相干。這基本上可能由個人來決定的,對于每位開發(fā)人員與每個團隊來說,都沒有對與錯的答案。
對于我們的團隊來說,這個問題主要是圍繞在一個協(xié)同環(huán)境與我們想猛拉大馬車,這種所謂的技術活中來關注諸多開發(fā)人員的工作??梢杂邪盐盏恼f,我們有 一個正在進行的討論。(諸多意見,對嗎?)在堅持既定的標準之間,我們的團隊正努力找到一種平衡,同時留有余地的提供給開發(fā)人員來創(chuàng)新和選擇為他們工作的 工具。
我想CoffeeScript可能會繼續(xù)伴隨著JavaScript,并推動JavaScript的創(chuàng)新。畢竟,這并不是一個非此即彼的命題。即使 有一天CoffeeScript消失了,我想就像CoffeeScript一樣的元編程語言(Metaprogramming Language)也會有很高的價值,因為它讓程序員以一種新的方式去想象和理解他們的代碼。這有助于提高每個人的藝術層次。
做一個善于交際的人,快來分享!
原文鏈接:http://www.oschina.net/translate/coffeescript-is-dead-long-live-coffeescript