简介

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.sqrtsquare: squarecube:   (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的中文网站,不过更新不够及时,网络访问好像也不太通畅。所以大家还是看原版吧。

CoffeeScript 简介相关推荐

  1. CoffeeScript 简介与安装步骤概览

    CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...

  2. typescript和coffeescript简介

    typescript 1.什么是typescript?和JavaScript有什么关系? 1.它是一门独立的语言,实现了自己的编译器   2.它的目标代码是JavaScript(很多语言的目标代码是机 ...

  3. CoffeeScript简介 二

    集合与迭代 .. 与 ... 先看例子: arr = ["a1", "a2", "a3", "a4", "a5 ...

  4. CoffeeScript简介 一

    介绍 coffeeScript是一种轻量级的编程语言,可以用编译器生成原生javascript代码.它简化了许多javascript繁琐的方式,可以让你用简单的方式直接使用一行程序代表javascri ...

  5. CoffeeScript入门

    官网文档传送门 CoffeeScript简介 CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. ...

  6. CoffeeScript - CoffeeScript安装使用入门

    CoffeeScript英文官网: http://coffeescript.org/ CoffeeScript中文官网: http://coffee-script.org/ CoffeeScript简 ...

  7. CoffeeScript 的简介与代码实例

    前段时间公司的一个项目是用CoffeeScript和backbone写的,于是去学了一下CoffeeScript,在此给大家分享一下 CoffeeScript--简介 我们知道JavaScript是硬 ...

  8. 开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)

    关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图.这里是最近学习CoffeeScript ...

  9. Python的IDE之PyCharm:PyCharm的简介、安装、入门、使用方法之详细攻略

    Python的IDE之PyCharm:PyCharm的简介.入门.使用方法之详细攻略 目录 PyCharm的简介 PyCharm的安装 JetBrains公司相关产品 下载地址01 下载地址02 下载 ...

  10. gulp+webpack工具整合简介

    webpack简介 Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. webpack特点 Webpack 有两种组织模块依赖的方式 ...

最新文章

  1. 【Ubuntu】ubuntu webqq桌面版pywebqq
  2. 通过Application对象实现网站计数器
  3. [html] 进入编辑页面时,如何把光标聚焦到第一个input?
  4. selenium python 启动Chrome
  5. 好想学python机器人_拥有自动学习的Python机器人-ChatterBot
  6. Python学习入门基础教程(learning Python)--5.4 Python读文件详解
  7. Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.10:proguard (default) on project
  8. 酒店管理系统数据库设计说明书
  9. 图神经网络 图像处理,神经网络与图像处理
  10. Pm2 部署 Nuxt 项目
  11. mac 清理微信缓存文件
  12. FOP生成PDF中文乱码问题解决
  13. 根据GFF3文件统计外显子大小和数量以及内含子大小
  14. Python-10.1-面向对象
  15. 里氏替换原则——举例说明Java设计模式中的里氏替换原则
  16. office2016 Excel 打开“宏”分三步
  17. 手机网站开发的经验总结
  18. 模电学习第一天--PN结梳理
  19. 【openpyxl】过滤和排序
  20. eclipse web项目启动后不自动打开浏览器,谷歌了一下终于找到设置了

热门文章

  1. Debian 10.2命令安装Nvidia显卡驱动成功,问题回顾
  2. 我喜欢用计算机300,我喜欢的人_作文300字_小学四年级作文_第一范文网
  3. C++ Qt 实现小游戏2048
  4. pdo mysql 函数_PDO函数属性详解
  5. UVa 12307 Smallest Enclosing Rectangle(旋转卡壳+最小覆盖矩形)
  6. SVG,收藏夹图标以及我们可以用它们做的所有有趣的事情
  7. 文献管理软件Mendeley优缺点分析
  8. python控制多个屏幕_使用Python控制屏幕
  9. java安装教程win7_给win7系统搭建Java环境的详细教程(图文)
  10. 网络通信,IP地址, 端口,socket