LiveScript 是一种编译成 JavaScript 的语言。它与 JavaScript 具有简单的映射关系,并允许您编写简洁的代码,避免重复的样板代码。虽然 LiveScript 添加了许多功能来辅助函数式编程,但它也对面向对象和命令式编程进行了许多改进。
更多信息,请查看LiveScript 网站。
LiveScript 1.3.0 修复了许多错误并添加了一些新功能,包括生成器和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! {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 已被删除,因为我们现在有for let
。将任何for ... then let
更改为for let .... then
。
LiveScript 的浏览器版本(browser/livescript.js
和browser/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
和Slakefile
已删除(不需要另一个构建系统!),请使用 make、gulp、grunt 等。
that
在 switch 中您可以在 switch 语句的 default case 中使用that
,表示您正在切换的值。
感谢Nami-Doc的大量贡献,以及 Haspacker、Rack Lin (racklin)、appedemic、piotrklibert和Ryan Hendrickson (rhendric)的贡献!
有关 LiveScript 的更多信息,请查看LiveScript 网站。
有关 LiveScript 和 prelude.ls 的更多信息,关注 @gkzahariev。
由 Disqus 提供支持的评论