BT

如何利用碎片时间提升技术认知与能力? 点击获取答案

Elm 0.11改进与JavaScript的互操作

| 作者 Tom Coupland 关注 0 他的粉丝 ,译者 臧秀涛 关注 4 他的粉丝 发布于 2014年3月12日. 估计阅读时间: 5 分钟 | QCon上海2018 关注大数据平台技术选型、搭建、系统迁移和优化的经验。

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

评价本文

专业度
风格

您好,朋友!

您需要 注册一个InfoQ账号 或者 才能进行评论。在您完成注册后还需要进行一些设置。

获得来自InfoQ的更多体验。

告诉我们您的想法

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我
社区评论

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

允许的HTML标签: a,b,br,blockquote,i,li,pre,u,ul,p

当有人回复此评论时请E-mail通知我

讨论

登陆InfoQ,与你最关心的话题互动。


找回密码....

Follow

关注你最喜爱的话题和作者

快速浏览网站内你所感兴趣话题的精选内容。

Like

内容自由定制

选择想要阅读的主题和喜爱的作者定制自己的新闻源。

Notifications

获取更新

设置通知机制以获取内容更新对您而言是否重要

BT