Elm 0.11改进与JavaScript的互操作

Elm最近的0.11版本致力于简化FRP语言和Javascript的组合使用。为实现该目标,Elm主要添加了两个功能:

\
  1. 能够创建组件(Component),组件是编译后的Elm代码,可以嵌入在div内。嵌入之后可以作为页面正常的一部分。\
  2. 端口(Port)用于JavaScript和Elm之间的通信。消息会通过定义好的传入端口(in-port)传到Elm组件中,而应答通过订阅了传出端口(out-port)的回调函数来处理。\

这两个元素结合在一起,为使用Elm的Haskell风格语法和创建可嵌入的UI组件和处理单元提供了支持。

\

2013年11月,第一届Elm研讨会在布达佩斯举行。Elm的作者Evan Czaplicki在会上谈到了Elm的未来。他指出,按照优先顺序,Elm有四件需要处理的开发任务:

\
  1. 以库的方式分享。\
  2. HTML和JavaScript的集成。\
  3. 使其他人可以方便地向Elm做出贡献。\
  4. 尾递归优化。\

应社区要求,他还演示了Elm的一个REPL(即Read-Eval-Print Loop)原型。

\

Elm的主页有很多Elm应用示例,我们可以与其互动。有一个很基础的马里奥(Mario)游戏,基本上是在Strange Loop 2013会议上,在现场观众面前实现的,突出显示了Elm的图形功能。如果想看一个更实用的例子,可以看一下Todo应用demo),它相当于Web框架的“Hello World”。如果想深入地了解一下Elm 的理论基础,可以查看Evan的论文发表在2013年的“编程语言设计与实现会议”(Programming Language Design and Implementation Conference 2013)上。

\

InfoQ就Evan在这些优先任务上的开发进度采访了他。

\

InfoQ在研讨会上,听上去您可能会集成Node Package Modules,以提供Elm的库解决方案,但是就能够将Elm模块与其余部分分离这点,您有所保留。您是不是设法解决了这个问题,还是说您决定采用不同方案了?

\
\

Evan我决定采用一种不同的方案,而且我很开心自己这么做了。Elm Public Library是最近发布的,它使得以库的方式分享程序非常容易。它也是通过GitHub提供的,不过对Elm用户而言,从头构建也是很愉快的体验。它使我可以自由地提供易于搜索的文档用Elm编写的)。宣告中更深入地谈到了技术决策和路线图,但重点是,我们现在可以分享库了!

\
\

InfoQ2012年,您希望Elm得到业界更多支持。您在Prezi工作的这种身份为您带来了所追求的东西吗?

\
\

Evan毫无疑问!在Prezi的工作对加速Elm的开发意义重大,但更重要的是,它使得我可以真正地专注于为业界用户准备好Elm的生态系统。这是我很久以来的目标,但是现在我有了一个友好且技术熟练的支撑团队,可以帮助我使目标成为现实。所以当我优先考虑某些特性或调整某个API时,总是有工程师乐于探讨并改进这些东西。我直接受到了Prezi的语言互操作基础设施的启发,从而有了Elm的端口(port ),进而使得Elm/JS可以简单无缝地进行互操作了。

\
\

InfoQElm现在的路线图是什么样的?

\
\

Evan0.11版本中的端口和即将到来的彻底修订的Graphics.Input,让我感觉Elm已经非常接近产品状态了。今年夏天,我们会将精力集中于进一步发掘运行时的性能,支持尾递归优化,以及改进调试与IDE支持。致力于优化和工具,表明我们总体上在向支持产品用户转变,而不是继续把精力投在语言本身上。

\

与此同时,Prezi内部已经在使用Elm。这种情况让我非常开心。到目前为止,我主要观察到的是,组件模型在实践中表现非常好。有些组件用Elm编写很不错,而且现在我们可以很方便地将其集成到更大的JS或TypeScript项目中。实际上我们在Prezi打算找一位开发者,让他编写更多Elm代码,我认为这将是一个可以证明Elm 已经为业界使用做好准备的一个考验。

\
\

查看英文原文:Elm 0.11 Improves JavaScript Interop

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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值