CoffeeScript

CoffeeScript

标签(空格分隔): Session


什么是CoffeeScript

CoffeeScript 编程语言是构建于 JavaScript 之上,它可编译成高效 JavaScript,您可以在 Web 浏览器上运行它或者将其与诸如 Node.js 一类的技术相结合用于构建服务器端应用程序。编译过程通常都很简单,生成的 JavaScript 均与许多最佳实践保持一致。

为什么要用CoffeeScript

示例代码:

pmb.requestPaymentInfo('type', function(info){
    $('result').innerHTML = info.name;
});

示例中含有许多样板代码,如括号、逗号、大括号、分号,以及一些并不是真正需要的语言关键字。
而CoffeeScript 解决了 JavaScript 这些痛点。CoffeeScript:

  • 提供一种比较简单的语法,减少了样板代码,诸如括号和逗号
  • 使用空格作为一种组织代码块的方法
  • 提供拥有表达函数的简单语法
  • 提供基于类的继承(可选项,但是在进行应用程序开发时非常有用)
    而在运行时,CoffeeScript将编译成简洁、高效的JavaScript,您总能清楚地看到正在编译的内容。

如何使用CoffeeScript

安装

1、首先安装node.js
2、从命令行运行 npm install –global coffee-script来安装Coffee

使用

1、创建一个名为 cup0.coffee

for i in [0..5]
  console.log "Hello #{i}"

2、运行 coffee cup0.coffee

$ coffee cup0.coffee 
Hello 0
Hello 1
Hello 2
Hello 3
Hello 4
Hello 5

3、输入 coffee -c cup0.coffee,编译为js

(function() {
    var i;
    for (i = 0; i <= 5; i++) {
        console.log("Hello " + i);
    }
}).call(this);

CoffeeScript 一个优势是,即使它提供的是一种比 JavaScript 更简洁的语法,但是可以编译成非常简单、有逻辑的 JavaScript

CoffeeScript的语法

1、函数
函数通过一组可选的圆括号包裹的参数, 一个箭头, 一个函数体来定义. 一个空的函数像是这样: ->

square = (x) -> x * x
cube   = (x) -> square(x) * x

编译为js

var cube, square;

square = function(x) {
  return x * x;
};

cube = function(x) {
  return square(x) * x;
};

2、对象和数组
CoffeeScript 中对象和数组的字面量看起来很像在 JavaScript 中的写法. 如果单个属性被写在自己的一行里, 那么逗号是可以省略的. 和 YAML 类似, 对象可以用缩进替代花括号来声明.

song = ["do", "re", "mi", "fa", "so"]

singers = {Jagger: "Rock", Elvis: "Roll"}

bitlist = [
  1, 0, 1
  0, 0, 1
  1, 1, 0
]

kids =
  brother:
    name: "Max"
    age:  11
  sister:
    name: "Ida"
    age:  9

编译为js

var bitlist, kids, singers, song;

song = ["do", "re", "mi", "fa", "so"];

singers = {
  Jagger: "Rock",
  Elvis: "Roll"
};

bitlist = [1, 0, 1, 0, 0, 1, 1, 1, 0];

kids = {
  brother: {
    name: "Max",
    age: 11
  },
  sister: {
    name: "Ida",
    age: 9
  }
};

3、词法作用域和变量安全
CoffeeScript 编译器会考虑所有变量,保证每个变量都在词法域里适当地被定义 — 你永远不需要自己去写 var,只需要直接使用该变量即可。
4、if, else, unless 和条件赋值
表达式可以不用圆括号和花括号就写出来.就像函数和其他块级表达式那样, 多行的条件可以通过缩进来表明.另外还有一个顺手的后缀形式,在行尾使用 if or unless.
if/else示例
5、变参(splats)…
使用 JavaScript 的 arguments 对象是一种处理接收不定数量个参数的函数常用办法. CoffeeScript 在函数定义和调用里提供了变参(splats) … 的语法, 让不定个数的参数使用起来更愉悦一些.
此处输入图片的描述
6、循环和推导式
可以使用CoffeeScript将大多数的循环写成基于数组、对象或范围的推导式(comprehensions)。 推导式替代(编译为)for循环,并且可以使用可选的子句和数组索引值。 不同于for循环,数组的推导式是表达式,可以被返回和赋值。
7、一切都是表达式 (至少尽可能成为)
CoffeeScript 函数是不需要写 return 语句的, 但是也会返回最终的结果. CoffeeScript 编译器会尽可能保证语言中所有的表达式都可以被当作表达式使用. 观察一下下面的函数, return 是怎样尽可能地插入到执行的分支当中的.
此处输入图片的描述
8、操作符和 aliase
由于操作符 == 常常带来不准确的约束, 不容易达到效果, 而且跟其他语言当中意思不一致, CoffeeScript 会把 == 编译为 ===, 把 != 变异为 !==. 此外, is 编译我 ===, 而 isnt 编译为 !==. not 可以作为 ! 的 alias 使用.
逻辑操作方面, and 编译为 &&, 而 or 编译为 ||.在 while, if/else,switch/when的语句当中,then可以被用来分隔判断条件跟表达式, 这样就不用强制写换行或者分号了.

参考资料

1、http://coffee-script.org/
2、http://ruby-china.org/topics/4789

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值