CoffeeScript這一門編程語言構(gòu)建在JavaScript之上,其被編譯成高效的JavaScript,這樣你就可以在web瀏覽器上運(yùn)行它,或是通過諸如用于服務(wù)器端應(yīng)用的Node.js一類的技術(shù)來使用它。編譯過程通常都很簡(jiǎn)單,產(chǎn)生出來的JavaScript與許多的最佳做法都保持 了一致。
其實(shí)就是把JS好用的地方提煉出來了,再加點(diǎn)語法糖!
除非你很熟悉JS,不然COFFEE的執(zhí)行效率大概會(huì)比手寫的高,而且優(yōu)雅
但是如果你真的很熟悉JS的話,你手寫JS出來的代碼應(yīng)該也是跟coffee編譯出來的沒差
所以選COFFEE還能省鍵盤。。
先來看下對(duì)比代碼(左為CoffeeScript):
CoffeeScript的吸引力:
1、提供一種比較簡(jiǎn)單的語法,減少了樣板代碼,諸如括號(hào)和逗號(hào);
2、使用空格作為一種組織代碼塊的方法;
3、提供擁有表達(dá)函數(shù)的簡(jiǎn)單語法;
4、提供基于類的繼承(可選項(xiàng),但是在進(jìn)行應(yīng)用程序開發(fā)時(shí)非常有用)
先決條件:
CoffeeScript使用Nodejs的包管理程序,作為Node.js的一個(gè)包進(jìn)行分布。
CoffeeScript必須被編譯,其編譯器實(shí)際上就是使用CoffeeScript編寫的,所以,需要一個(gè)JavaScript運(yùn)行時(shí)來完成其編譯。
安裝方法:
sudo npm install -g coffee-script
安裝成功后,我們應(yīng)該能夠在命令行中找到 coffee 命令了。coffee -v 我這里看到的是 1.6.0。使用 coffee 命令,可以將 .coffee 文件編譯成 js 文件。使用 coffeescript 的格式來寫 javascript 據(jù)說可以節(jié)省三分之二的代碼量哦。
基本用法:
-c,--compile 將.coffee編譯為.js文件
-w,--watch 監(jiān)控文件的變化,并輸出監(jiān)控的結(jié)果
-o,--output [DIR] 將編譯的結(jié)果文件輸出到指定目錄
-p,--print 將編譯結(jié)果
-l,--lint 如果安裝了 jsl (javascript lint)的話,使用lint檢查代碼
-s,--stdio 將其它程序的輸出作為coffee的標(biāo)準(zhǔn)輸入,并且獲得JavaScript的標(biāo)準(zhǔn)輸出。
-e,--eval 命令行的形式
安裝:
你是否曾希望能夠通過命令行來運(yùn)行JavaScript?反正我是沒有,不過CoffeeScript可能會(huì)改變現(xiàn)狀。有了Node.js,你可以通過命令行來運(yùn)行JavaScript,或是把JavaScript作為執(zhí)行腳本的組成部分來運(yùn)行。Node.js的這一主要功能允許在命令行上執(zhí)行CoffeeScript代碼,其提供了(使用CoffeeScript編寫的)CoffeeScript編譯器所需要的運(yùn)行時(shí)。
第一步是安裝Node.js,有幾種安裝選擇;你可以編譯源代碼,或是運(yùn)行可用于各種系統(tǒng)的安裝程序之一。通過命令行運(yùn)行node -v來確認(rèn)Node.js已經(jīng)安裝并且已位于路徑中。
Node.js給你帶來了一個(gè)額外的收獲:節(jié)點(diǎn)包管理器(NPM)。通過命令行運(yùn)行npm -v確認(rèn)NPM已經(jīng)安裝并已位于路徑中之后,就可以按照如下步驟來使用NPM安裝CoffeeScript了。
1. 通過命令行運(yùn)行npm install --global coffee-script。
--global標(biāo)記讓CoffeeScript可為全系統(tǒng)所用而不僅是為某個(gè)特定項(xiàng)目所用。
2. npm命令應(yīng)該輸出諸如/usr/bin/coffee -> /usr/lib/node_modules/coffee-script/bin/coffee一類的信息。
NPM在 /usr/bin中創(chuàng)建了一個(gè)快捷方式,所以現(xiàn)在coffee這一可執(zhí)行文件就處在正確的路徑中了,這是CoffeeScript的編譯器和解釋器。
3. 若要驗(yàn)證coffee這一執(zhí)行文件已位于路徑中,通過命令行運(yùn)行coffee -v。
還剩最后一步來確認(rèn)CoffeeScript的環(huán)境已被正確設(shè)置。為了讓CoffeeScript對(duì)于任何啟動(dòng)的Node.js進(jìn)程來說都是可用的,你需要把它加入到Node.js所謂的NODE_PATH中,在遇到未識(shí)別的函數(shù)時(shí),Node.js會(huì)通過搜索NODE_PATH來獲取一些模塊(庫)。
就本文中的例子來說,主要是把Node.js用作CoffeeScript可執(zhí)行文件的運(yùn)行時(shí)。最容易的做法是簡(jiǎn)單地把所有的NPM模塊都添加到NODE_PATH中,若要找出NPM模塊所處的位置,輸入 npm ls -g,你需要添加一個(gè)把NODE_PATH指向這一位置的環(huán)境變量。例如,如果npm ls -g的輸出是/usr/lib,則模塊位于/usr/lib/node_modules目錄下,若要設(shè)置一個(gè)NODE_PATH環(huán)境變量,運(yùn)行export NODE_PATH=/usr/lib/node_modules。
你可以通過把上面的命令放入到啟動(dòng)腳本(比如說~/.bash_profile)中來進(jìn)一步簡(jiǎn)化這些事情。若要驗(yàn)證所做的修改,執(zhí)行Node來啟動(dòng)一個(gè)Node.js外殼程序,然后輸入require(\'coffee-script\'),Node.js外殼程序應(yīng)該就會(huì)載入CoffeeScript庫。如果執(zhí)行沒問題的話,CoffeeScript環(huán)境就是隨時(shí)可用的了,F(xiàn)在你可以從編譯器開始,啟動(dòng)CoffeeScript的探索之旅了。
編譯器
運(yùn)行CoffeeScript編譯器很容易,只要輸入coffee -c就可以了,該命令啟動(dòng)了CoffeeScript的讀取-計(jì)算-輸出-循環(huán)(read-evaluate-print-loop,REPL)。若要執(zhí)行該編譯器,你需要把一個(gè)想要編譯CoffeScript文件傳給它。創(chuàng)建一個(gè)名為cup0.coffee的文件,把清單2中的內(nèi)容粘貼到該文件中。
清單2. Cup 0
for i in [0..5]
console.log \"Hello #{i}\"
你可能會(huì)猜想清單2中的這兩行代碼能干什么,清單3給出了運(yùn)行coffee cup0.coffee的輸出。
清單3. 運(yùn)行首個(gè)CoffeeScript
$ coffee cup0.coffee
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5
為了對(duì)發(fā)生的事情有一個(gè)更加清晰的概念,試著運(yùn)行一下編譯器,輸入coffee -c cup0.coffee,該命令創(chuàng)建了一個(gè)名為cup0.js的文件,清單4給出了cup0.js的內(nèi)容。
CoffeeScript 1.9.3 發(fā)布,此版本主要有以下更新:
Bugfix for interpolation in the first key of an object literal in an implicit call.
Fixed broken error messages in the REPL, as well as a few minor bugs with the REPL.
Fixed source mappings for tokens at the beginning of lines when compiling with the --bareoption. This has the nice side effect of generating smaller source maps.
Slight formatting improvement of compiled block comments.
Better error messages for on, off, yes and no.