天天看點

CoffeeScript 簡介

簡介

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的

中文網站

,不過更新不夠及時,網絡通路好像也不太通暢。是以大家還是看原版吧。

繼續閱讀