ToffeeScript – 支持异步语法的CoffeeScript

ToffeeScript是CoffeeScript衍生,在完全兼容CoffeeScript的语法下提供了一些新的特性。

一、 特性一览

  1. 异步语法支持
  2. Ruby Symbol语法的字串
  3. 正则运算符 =~
  4. 正则Magic标识符 \& \~ \1..9

1. 异步语法支持

语法: 在调用的函数尾加上!(感叹号)
输入:
    do ->
      # ! always is a function
      foo_0_0!
      @va = obj.foo_2_1! 'pa', 'pb'
      # @ is inherited
      [va, @vb] = obj::foo_2_2! 'pa', 'pb'

    # another async block
    do ->
      @va = @foo! 'pa'

    # if, while and so on has block too
    if true
      va = foo!
    else
      vb = foo!
输出:
    var _this = this;

    (function() {
      var _this = this;
      return foo_0_0(function() {
        return obj.foo_2_1('pa', 'pb', function(va) {
          _this.va = va;
          return obj.prototype.foo_2_2('pa', 'pb', function(va, vb) {
            _this.vb = vb;
          });
        });
      });
    })();

    (function() {
      var _this = this;
      return this.foo('pa', function(va) {
        _this.va = va;
      });
    })();

    if (true) {
      foo(function(va) {});
    } else {
      foo(function(vb) {});
    }
a. 原理
ToffeeScript 会把
    [any expression] = foo!(params)
    other expression
转换为
    foo params, (any expression) =>
      other expression
因此
    [a = '3', @b = '4'] = foo!
    @a = foo!
    ...
    等等
都是有效的异步语法

2. Symbol语法的字串

ToffeeScript引用了Ruby Symbol的语法,但本质仍是字串,可以看成一种字串的便捷写法。
语法: 以:开头的字串 /^\:((?:\\.|\w|-)+)/
备注: - 是有效的字串部份,
输入:
    :hello_world
    :hello-world
输出:
    'hello_world'
    'hello-world'

3. 正则运算符 =~

语法: 字串 =~ 正则表达式
输入:
    "hello" =~ /\w+/
输出:
    var __matches = null;
    __matches = "hello".match(/\w+/);

4. 正则Magic标识符 \& \~ \1..9

Magic标识符:
    \~: the match
    \&: match[0]
    \1: match[1]
    \2: match[2]
    ...
    \9: match[9]
输入:
    if :hello =~ /^\w+$/
      console.info :matched

    if :333-444 =~ /^(\d+)-(\d+)$/
      console.info \1, \2
输出:
    (function() {
      var __matches = null;
      if (__matches = 'hello'.match(/^\w+$/)) console.info('matched');
      if (__matches = '333-444'.match(/^(\d+)-(\d+)$/)) {
        console.info(__matches[1], __matches[2]);
      }
    }).call(this);

二、 安装

npm install -g toffee-script
ToffeeScript有两个可执行文件 toffee and tcons 相对于CoffeeScript的 coffee 与 cake

三、 相关链接

ToffeeScript Github
CoffeeScript Github
COffeeScript 语法介绍
共1条Pingback

发表评论

电子邮件地址不会被公开。 必填项已被标记为 *

*

您可以使用这些 HTML 标签和属性: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>