簡介
JavaScript也是一門經曆了很多年的語言了,自從浏覽器興起,JavaScript就一直在被使用。但是,JavaScript有一些特性沒有實作,為了讓JavaScript更好用,
CoffeeScript這個東西被發明出來。CoffeeScript可以看成是JavaScript的更新檔版本,文法和JavaScript非常相似,但是增加了許多文法糖,CoffeeScript最後編譯的結果也是JavaScript。另外CoffeeScript和JavaScript的互操作性也很好,它們兩者編寫的庫之間可以無縫互相調用。
JavaScript的新标準
ESMAScript 2015添加了類、
await
/
asyc
等支援。相應地,CoffeeScript 2 也添加這些特性的支援。不過需要注意,CoffeeScript 2和CoffeeScript 1 并不相容,而且現在浏覽器對ESMAScript 2015的支援還有限。是以在使用CoffeeScript 2的時候需要注意。
安裝
安裝CoffeeScript很簡單,首先先安裝NodeJS。然後用
npm
安裝。
npm install --global coffee-script
安裝完成之後,我們就可以使用
coffee
指令行了。直接運作該指令會進入互動操作終端,使用
-c
參數可以編譯Coffee檔案。詳細指令行參數參考
Usage。
概覽
以下就是CoffeeScript官網的示例代碼,列出了的一些文法糖。我們可以看到CoffeeScript支援很多現代的文法糖,例如
if
表達式、lambda表達式、elvis運算符、數組了解等等。
我們還可以從中看到CoffeeScript的一些特點:不需要手動編寫
var
,編譯器會自動判斷作用範圍;不需要編寫分号,代碼作用域使用所進來判斷;而且方法調用的括号也可以省略。還有其他一些特性,直接看官方文檔吧。
# Assignment:
number = 42
opposite = true
# Conditions:
number = -42 if opposite
# Functions:
square = (x) -> x * x
# Arrays:
list = [1, 2, 3, 4, 5]
# Objects:
math =
root: Math.sqrt
square: square
cube: (x) -> x * square x
# Splats:
race = (winner, runners...) ->
print winner, runners
# Existence:
alert "I knew it!" if elvis?
# Array comprehensions:
cubes = (math.cube num for num in list)
上面的代碼會被編譯為等價的JavaScript。可以看到,CoffeeScript确實比普通的JavaScript的表達能力更強,怪不得Atom編輯器主要就是使用CoffeeScript寫的,如果完全使用JavaScript編寫,代碼量肯定會大不少。
var cubes, list, math, num, number, opposite, race, square;
number = 42;
opposite = true;
if (opposite) {
number = -42;
}
square = function(x) {
return x * x;
};
list = [1, 2, 3, 4, 5];
math = {
root: Math.sqrt,
square: square,
cube: function(x) {
return x * square(x);
}
};
race = function(winner, ...runners) {
return print(winner, runners);
};
if (typeof elvis !== "undefined" && elvis !== null) {
alert("I knew it!");
}
cubes = (function() {
var i, len, results;
results = [];
for (i = 0, len = list.length; i < len; i++) {
num = list[i];
results.push(math.cube(num));
}
return results;
})();
進一步學習
如果希望進一步學習CoffeeScript的話,直接看官方文檔就好了。這個官方文檔做得很不錯,有很多互動式例子,編輯左邊的Coffee代碼,右邊就會編譯出JavaScript代碼,還能線上運作,非常友善。
我倒是找到了一個CoffeeScript的
中文網站,不過更新不夠及時,網絡通路好像也不太通暢。是以大家還是看原版吧。