ToffeeScript 1.6.2 发布

ToffeeScript

支持异步语法的CoffeeScript

特性

  1. 异步语法
    • 条件语句: If, Switch
    • 循环语句: For In, For Of, While with guard when
    • 数值运算
    • 逻辑运算:
  2. 自动回调
  3. 正则运算 =~ 与匹配项 \~, \&, \0~\9
  4. 支持 Sourcemap
    • 当前基于 CoffeeScript 1.6.2

安装

npm install toffee-script

代码例子

左: ToffeeScript

右: 生成的 JavaScript

基础

x, y = a! b
console.log x, y
var x, y,
  _this = this;

a(b, function() {
  x = arguments[0], y = arguments[1];
  return console.log(x, y);
});

条件语句

if i
  x = a!
else
  y = b!
console.log x, y
var x, y, _$$_0,
  _this = this;

_$$_0 = function() {
  return console.log(x, y);
};

if (i) {
  a(function() {
    x = arguments[0];
    _$$_0();
  });
} else {
  b(function() {
    y = arguments[0];
    _$$_0();
  });
}

循环语句

支持 For In, For Of, While 同时支持 guard when

xs = for i in [1..3] when i > 2
  a!
var i, xs,
  _this = this;

(function(_$cb$_0) {
  var _$res$_1, _body, _done, _i, _step;
  _$res$_1 = [];
  i = _i = 1;
  _step = function() {
    i = ++_i;
    _body();
  };
  _body = function() {
    if (_i <= 3) {
      if (i > 2) {
        a(function(_$$_2) {
          _step(_$res$_1.push(_$$_2));
        });
      } else {
        _step();
      }
    } else {
      _done();
    }
  };
  _done = function() {
    _$cb$_0(_$res$_1);
  };
  _body();
})(function() {
  return xs = arguments[0];
});

数值运算

x = a! + b! * c!
var x,
  _this = this;

(function(_$cb$_0) {
  a(function(_$$_1) {
    (function(_$cb$_2) {
      b(function(_$$_3) {
        c(function(_$$_4) {
          _$cb$_2(_$$_3 * _$$_4);
        });
      });
    })(function(_$$_5) {
      _$cb$_0(_$$_1 + _$$_5);
    });
  });
})(function() {
  return x = arguments[0];
});

对象

A =
  a: a
  b: b!
  c: c
var A,
  _this = this;

(function(_$cb$_0) {
  var _$$_1;
  _$$_1 = a;
  b(function(_$$_2) {
    _$cb$_0({
      a: _$$_1,
      b: _$$_2,
      c: c
    });
  });
})(function() {
  return A = arguments[0];
});

逻辑运算

Support ||, &&, ?, &&=, ||=, ?=

x = a! || b!
console.log x
var x,
  _this = this;

(function(_$cb$_0) {
  (function(_$cb$_3) {
    a(function(_$$_1) {
      if (_$$_1) {
        _$cb$_3(_$$_1);
      } else {
        b(function(_$$_2) {
          _$cb$_3(_$$_2);
        });
      }
    });
  })(function(_$$_4) {
    _$cb$_0(_$$_4);
  });
})(function() {
  x = arguments[0];
  return console.log(x);
});

自动回调

a = (autocb) -> return 3
var a;

a = function(autocb) {
  return autocb(3);
};

返回多个值

a = (autocb) -> return null, 3
var a;

a = function(autocb) {
  return autocb(null, 3);
};

正则运算

if a =~ b || b =~ c
  \~
  \&
  \0
  \9
var __matches;

if ((__matches = a.match(b)) || (__matches = b.match(c))) {
  __matches;
  __matches[0];
  __matches[0];
  __matches[9];
}

其它

源码地址: https://github.com/jiangmiao/toffee-script

发表评论

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