跳转到内容

CoffeeScript

维基百科,自由的百科全书

这是本页的一个历史版本,由Akiratw留言 | 贡献2013年11月1日 (五) 09:53 撤销Time killer讨论)的版本28999355)编辑。这可能和当前版本存在着巨大的差异。

CoffeeScript
编程范型編程範型: 原型程式設計, 函數程式語言, 指令式編程, 腳本語言
設計者Jeremy Ashkenas
實作者Jeremy Ashkenas 等數人
发行时间2009
当前版本
  • 2.7.0(2022年4月24日;穩定版本)[1][2]
編輯維基數據鏈接
操作系统跨平台
許可證MIT License
文件扩展名.coffee
網站coffeescript.org
受影响于
Haskell,[3] JavaScript, Perl, Python,[3] Ruby,[3] YAML[4]
影響語言
MoonScript

CoffeeScript 是一套 JavaScript 的轉譯語言。受到 RubyPythonHaskell 等語言的啟發[3],CoffeeScript 增強了 JavaScript 的簡潔性與可讀性。此外,CoffeeScript 也新增了更複雜的功能,例如列表内涵List comprehension)、模式匹配Pattern matching)等。一般來說,CoffeeScript 可以在不影響執行效能的情況下,縮短約三分之一的程式碼長度[5]。自從2011年6月以來,CoffeeScript 已經是 GitHub 上最受矚目的專案之一。[6]

歷史

2009年12月3日Jeremy AshkenasGit 上對 CoffeeScript 做出了第一筆提交「這是這個神秘語言最初的提交。(initial commit of the mystery language.)」[7]當時的編譯器由 Ruby 語言所寫成。在同年12月24日,Ashkenas 做出了第一個上標籤與歸檔的版本-0.1.0。2010年2月21日,他釋出了 0.5 版,此版本將原先由 Ruby 撰寫的編譯器改寫為純 CoffeeScript 撰寫。當時吸引了 GitHub 上的許多貢獻者,每日約有 300 人次造訪該專案的頁面。2010年12月24日,Askenas 釋出了 1.0.0 穩定版本,並在 Hacker News 上發表。Hacker News 也是當時此專案第一次發表的網站。[8][9]

語法

許多 JavaScript 的陳述句皆可在 CoffeeScript 中視為表達式。例如,if, switchfor 等。這些控制陳述句也有後綴的版本。

CoffeeScript 的一般原則,是可以省略許多不必要的括號和大括號,可以使用縮排來取代。可以以隱喻方式呼叫函數(在 JavaScript 中呼叫函數所需的括號可以被省略),物件文字通常可以自動偵測。

範例

一個使用 jQuery 的普通 JavaScript 程式碼如下:

$(document).ready(function() {
  // 這裡是初始化的程式碼
});

或可以更省略:

$(function() {
  // 這裡是初始化的程式碼
});

在 CoffeeScript 裡,function 關鍵字可用 -> 符號來取代,結尾的分號也可用縮排來表示,如同 PythonHaskell縮排語言Off-side rule)一樣。此外,大括號通常也可以省略。因此上述的程式碼在 CoffeeScript 中可寫成如下的形式。

$(document).ready ->
  # 這裡是初始化的程式碼

($ document).ready ->
  # 這裡是初始化的程式碼

又或者

$ ->
  # 這裡是初始化的程式碼

編譯

CoffeeScript 的編譯器在 0.5 版本之後由 CoffeeScript 本身寫成,為 Node.js 裡的一個工具程式。但核心程式碼並不依賴 Node.js,且可直接在任何支援 JavaScript 的環境中使用。[10]此外,可以使用 Coffee Maven Plugin 作為 Node.js 之外的替代方案,這是 Apache Maven 建置工具的外掛,由 Rhino JavaScript 引擎並以 Java 語言寫成。

在 CoffeeScript.org 官方網站的選單上有「Try CoffeeScript」按鈕,可以讓使用者直接輸入 CoffeeScript 程式碼並直接在瀏覽器上編譯成 JavaScript。另外一個網站「jscoffee[11]」提供雙向轉譯的功能。

引用資料

  1. ^ 2.7.0. 2022年4月24日 [2022年8月9日]. 
  2. ^ https://registry.npmjs.com/coffeescript; 检索日期: 2023年3月1日.
  3. ^ 3.0 3.1 3.2 3.3 The Changelog. Episode 0.2.9 - CoffeeScript with Jeremy Ashkenas, July 23, 2010
  4. ^ Heller, Martin. Turn up your nose at Dart and smell the CoffeeScript. JavaWorld (InfoWorld). 18 October 2011 [2012-02-09]. 
  5. ^ Read Write Hack. Interview with Jeremy Ashkenas, Jan 7, 2011
  6. ^ Github. Popular Watched Repositories
  7. ^ Github. 'initial commit of the mystery language'
  8. ^ Hacker News. CoffeeScript 1.0.0 announcement posted by Jeremy Ashkenas on Dec 24, 2010
  9. ^ Hacker News. Original CoffeeScript announcement posted by Jeremy Ashkenas on Dec 24, 2009
  10. ^ http://jashkenas.github.com/coffee-script/#installation
  11. ^ jscoffee. 

外部連結

教學文件