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.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 简介相关推荐
- CoffeeScript 简介与安装步骤概览
CoffeeScript 简介与安装步骤概览 一.关于CoffeeScript CoffeeScript是一门新兴的构建在JavaScript之上的预处理器语言,经过编译可以生成高效的JavaScri ...
- typescript和coffeescript简介
typescript 1.什么是typescript?和JavaScript有什么关系? 1.它是一门独立的语言,实现了自己的编译器 2.它的目标代码是JavaScript(很多语言的目标代码是机 ...
- CoffeeScript简介 二
集合与迭代 .. 与 ... 先看例子: arr = ["a1", "a2", "a3", "a4", "a5 ...
- CoffeeScript简介 一
介绍 coffeeScript是一种轻量级的编程语言,可以用编译器生成原生javascript代码.它简化了许多javascript繁琐的方式,可以让你用简单的方式直接使用一行程序代表javascri ...
- CoffeeScript入门
官网文档传送门 CoffeeScript简介 CoffeeScript 是一门编译到 JavaScript 的小巧语言. 在 Java 般笨拙的外表下, JavaScript 其实有着一颗华丽的心脏. ...
- CoffeeScript - CoffeeScript安装使用入门
CoffeeScript英文官网: http://coffeescript.org/ CoffeeScript中文官网: http://coffee-script.org/ CoffeeScript简 ...
- CoffeeScript 的简介与代码实例
前段时间公司的一个项目是用CoffeeScript和backbone写的,于是去学了一下CoffeeScript,在此给大家分享一下 CoffeeScript--简介 我们知道JavaScript是硬 ...
- 开源:Angularjs示例--Sonar中项目使用语言分布图(CoffeeScript版)
关于SonarLanguage是什么东东,这里就不在描述了,如果你对它感兴趣的话,请移步到上篇随笔开源:Angularjs示例--Sonar中项目使用语言分布图.这里是最近学习CoffeeScript ...
- Python的IDE之PyCharm:PyCharm的简介、安装、入门、使用方法之详细攻略
Python的IDE之PyCharm:PyCharm的简介.入门.使用方法之详细攻略 目录 PyCharm的简介 PyCharm的安装 JetBrains公司相关产品 下载地址01 下载地址02 下载 ...
- gulp+webpack工具整合简介
webpack简介 Webpack 是一个模块打包器.它将根据模块的依赖关系进行静态分析,然后将这些模块按照指定的规则生成对应的静态资源. webpack特点 Webpack 有两种组织模块依赖的方式 ...
最新文章
- 【Ubuntu】ubuntu webqq桌面版pywebqq
- 通过Application对象实现网站计数器
- [html] 进入编辑页面时,如何把光标聚焦到第一个input?
- selenium python 启动Chrome
- 好想学python机器人_拥有自动学习的Python机器人-ChatterBot
- Python学习入门基础教程(learning Python)--5.4 Python读文件详解
- Failed to execute goal com.github.wvengen:proguard-maven-plugin:2.0.10:proguard (default) on project
- 酒店管理系统数据库设计说明书
- 图神经网络 图像处理,神经网络与图像处理
- Pm2 部署 Nuxt 项目
- mac 清理微信缓存文件
- FOP生成PDF中文乱码问题解决
- 根据GFF3文件统计外显子大小和数量以及内含子大小
- Python-10.1-面向对象
- 里氏替换原则——举例说明Java设计模式中的里氏替换原则
- office2016 Excel 打开“宏”分三步
- 手机网站开发的经验总结
- 模电学习第一天--PN结梳理
- 【openpyxl】过滤和排序
- eclipse web项目启动后不自动打开浏览器,谷歌了一下终于找到设置了
热门文章
- Debian 10.2命令安装Nvidia显卡驱动成功,问题回顾
- 我喜欢用计算机300,我喜欢的人_作文300字_小学四年级作文_第一范文网
- C++ Qt 实现小游戏2048
- pdo mysql 函数_PDO函数属性详解
- UVa 12307 Smallest Enclosing Rectangle(旋转卡壳+最小覆盖矩形)
- SVG,收藏夹图标以及我们可以用它们做的所有有趣的事情
- 文献管理软件Mendeley优缺点分析
- python控制多个屏幕_使用Python控制屏幕
- java安装教程win7_给win7系统搭建Java环境的详细教程(图文)
- 网络通信,IP地址, 端口,socket