GMTC全球大前端技术大会(北京站)门票9折特惠截至本周五,点击立减¥480 了解详情
写点什么

Elm 0.11 改进与 JavaScript 的互操作

2014 年 3 月 11 日

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

2014 年 3 月 11 日 05:391235
用户头像
臧秀涛 略懂技术的运营同学。

发布了 300 篇内容, 共 116.6 次阅读, 收获喜欢 25 次。

关注

评论

发布
暂无评论
发现更多内容

第三节课后作业

happy

干货 | 全面解析“数字经济”

CECBC区块链专委会

数字经济 经济 经济建设

云原生虚机应用托管-设计篇

8小时

区块链技术最重要价值所在

CECBC区块链专委会

区块链 数字经济 经济

架构师训练营第三周:系统架构

m

~~寒露节记~~

wo是一棵草

入行架构师之前,这7项技能你要先了解一下

Java架构师迁哥

Python时间序列分析简介(1)

计算机与AI

Python pandas 数据处理 时间序列

架构师训练营 第三周作业

haha

极客大学架构师训练营

架构师训练营第一期 - 第四周课后 - 作业一

极客大学架构师训练营

线上服务平均响应时间太长,怎么排查?

小Q

Java 程序员 测试 Jmeter 性能调优

如何使用 dotTrace 来诊断 netcore 应用的性能问题

newbe36524

微服务 .net core netcore ASP.NET Core

【第三周】课后作业

云龙

第三周作业

Geek_ac4080

这可能是GitHub上最适合计算机专业学生看的编程教程

小Q

Java 学习 编程 面试 基础

看动画学算法之:linkedList

程序那些事

数据结构和算法 看动画学算法 看动画学数据结构 算法和数据结构

架构师训练营第三周学习总结

Gosling

极客大学架构师训练营

「剑指offer」27道Mybatis面试题含解析

Java架构师迁哥

【第三周】代码重构

云龙

基于区块链技术实现“资产通证化”

CECBC区块链专委会

资产证券化 流动性

第三周总结

Geek_ac4080

极客时间架构 1 期:第 3 周代码重构 - 命题作业

Null

第四周

Geek_fabd84

3. CocoaPods 命令解析 - CLAide

Edmond

ruby ios objective-c CocoaPods PackageManager

2N方定点算法

刀斧手何在

php 数据库 分布式 算法 后端

私有云PAAS平台的思考

8小时

开源的意义与价值

Braisdom

Java 开源 ORM

手把手教你锤面试官 03——Spring怎么那么简单

慵懒的土拨鼠

各角色如何从DevOps中受益?

禅道项目管理

DevOps 产品经理 测试 开发 运维工程师

如果朋友圈没有点赞功能,你还会发朋友圈吗

彭宏豪95

微信 产品 互联网 写作

架构师训练营第 1 期第 4 周作业

好吃不贵

极客大学架构师训练营

Elm 0.11改进与JavaScript的互操作-InfoQ