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























