LiveScript 1.3.0 发布 - 生成器和 Yield!

2014年10月4日 - George Zahariev

LiveScript 是一种编译成 JavaScript 的语言。它与 JavaScript 具有简单的映射关系,并允许您编写简洁的代码,避免重复的样板代码。虽然 LiveScript 添加了许多功能来辅助函数式编程,但它也对面向对象和命令式编程进行了许多改进。

更多信息,请查看LiveScript 网站

1.3.0

LiveScript 1.3.0 修复了许多错误并添加了一些新功能,包括生成器yield支持!

生成器和 Yield

您现在可以在 LiveScript 代码中使用生成器和 yield!简要概述

function* f
    yield "foo"

g = ->*
    yield from f!
    yield "bar"

h = g!
h.next!.value + h.next!.value #=> "foobar"
var g, h;
function* f(){
  yield "foo";
}
g = function*(){
  yield* f();
  yield "bar";
};
h = g();
h.next().value + h.next().value;

您可以通过在function关键字后附加星号*或将其附加到 LiveScript 的箭头表示法来创建生成器。这适用于我们拥有的各种箭头。

yield与 JavaScript 中的相同,yield from是 JavaScript 中的yield*

要使用节点 0.11 运行使用生成器和 yield 的代码,请使用--harmony标志。如果直接使用lsc运行,请使用lsc file.ls --nodejs --harmony将 harmony 标志传递给节点。

vim-ls已更新以突出显示yield,并且还有许多其他改进。

require!

require!已更改为更易于使用:require! {a: b}已更改为表示b = require('a'),并且您现在可以解构,例如

require! {
    fs: filesystem
    'prelude-ls': {map, id}
    path: {join, resolve}:p
}
var filesystem, ref$, map, id, p, join, resolve;
filesystem = require('fs');
ref$ = require('prelude-ls'), map = ref$.map, id = ref$.id;
p = require('path'), join = p.join, resolve = p.resolve;

管道和赋值优先级

一个修复程序可能会破坏某些代码的错误是管道运算符和赋值的优先级。赋值现在比所有管道都具有较低的优先级,因此

result1 = 'hello' |> reverse |> upCase
'OLLEH' == result1

result2 = upCase <| reverse <| \hello
'OLLEH' == result2

自动注入 IIFE

自动注入 IIFE 已被删除,因为我们现在有for let。将任何for ... then let更改为for let .... then

浏览器版本

LiveScript 的浏览器版本(browser/livescript.jsbrowser/livescript-min.js)现在与browserify打包在一起。要使用浏览器版本,请包含您想要的文件,然后执行

    var LiveScript = require("LiveScript");

例如

<script src="livescript.js"></script>
<script type="text/ls">
    console.log "boom #{window.location}"
</script>
<script>
    var LiveScript = require("LiveScript");
    LiveScript.go();
</script>

LiveScript.go()查找任何具有type="text/ls"的脚本标签,编译它们并执行它们。

选项解析和帮助

现在使用Optionator进行选项解析和帮助文本生成,而不是自定义解决方案。--require选项已被删除,因为它没有用。

无标题选项

您可以使用--no-header选项在编译时不输出标题。在通过header: false选项使用 LiveScript 作为库时,此选项也可使用。

使用lsc,而不是livescript

livescript已从 bin 中删除,请现在在命令行中使用lsc。它完全相同,但输入更短!

Slake

slakeSlakefile已删除(不需要另一个构建系统!),请使用 make、gulp、grunt 等。

that在 switch 中

您可以在 switch 语句的 default case 中使用that,表示您正在切换的值。

感谢

感谢Nami-Doc的大量贡献,以及 Haspacker、Rack Lin (racklin)appedemicpiotrklibertRyan Hendrickson (rhendric)的贡献!

有关 LiveScript 的更多信息,请查看LiveScript 网站


有关 LiveScript 和 prelude.ls 的更多信息,

Disqus 提供支持的评论