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