阿里云「飞天发布时刻」2024来啦!新产品、新特性、新能力、新方案,等你来探~ 了解详情
写点什么

用 Elm 语言降低失败的风险

  • 2015-10-08
  • 本文字数:812 字

    阅读完需:约 3 分钟

Strange Loop 2015 有一个亲自体验环节,在一次实践活动中,Richard Feldman 讲述了他的团队使用 Elm 语言的经历,他们的项目在使用这门语言后失败的风险大幅降低,迭代的速度也有所提升。

世界各地的 JavaScript 开发者可能都遇到过undefined is not a function这个错误。Feldman 藉由这个痛点来告诉人们 Elm 是一门可以提升开发者开发体验的语言,Elm 编译器会捕捉令原生 JavaScript 开发者苦恼的所有错误。据 Feldman 说,在 Elm 应用中,“编译后的应用会运行在一个 try 代码段中,不会回退或抛出运行时异常”。

我对与 Elm 所带来的良好的用户体验感到好奇,后来我发现,正是 Elm 那无微不至的完美细节让你每天的编码人生都无比快乐。

对于很多不熟悉 Elm 的人来说,它就是一门由 Evan Czaplicki 创建的函数式编程语言,它的设计初衷是简化构建 web UI 的过程。Elm 最终会被编译为 JavaScript,它与 React 一样使用虚拟 DOM 来操作界面。 Elm 博客上的测试基准(benchmark)指出,它出奇地竟然比 React 还快!

最简单的 Elm 代码看起来是这样的:

复制代码
import Html exposing (span, text)
import Html.Attributes exposing (class)
main =
span [class "welcome-message"] [text "Hello, World!"]

“Elm 里的一切皆由二者组成:不可变数据和无状态函数,”Feldman 说。这种设计的函数性纯度(函数没有副作用)理论上很好,但是 web 开发者经常不得不与许多其它系统进行交互,而 Elm 中的“ Task (任务)”特性就用来解决这类问题。Feldman 告诉我们 task 可以理解为“你想做的事情的数据表示,它实际上也是一连串的指令”。

Elm 可以与使用“ ports ”的 JavaScript 库进行交互,所以开发者可以用 Elm 代码替换应用的某些构件,然后用 port 将二者联结在一起。

Feldman 的演讲视频可以在 Youtube 上观看,其它环节可以在视频列表中观看。另外你可以阅读Feldman 写的一篇教程文章《用Elm 来构建一个注册页面》。

查看英文原文 Reduce the Risk of Failure With Elm

2015-10-08 19:002327
用户头像

发布了 63 篇内容, 共 131.7 次阅读, 收获喜欢 38 次。

关注

评论

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

《HarmonyOS实战—入门到开发,浅析原子化服务》

攻城狮杰森

操作系统 HarmonyOS 7月月更

【LeetCode】 解密消息Java题解

Albert

LeetCode 7月月更

Qt|多个窗口共有一个提示框类

中国好公民st

qt 7月月更

OpenSergo 即将发布 v1alpha1,丰富全链路异构架构的服务治理能力

阿里巴巴中间件

阿里云 微服务 云原生 云原生开源 OpenSergo

ServiceMesh主要解决的三大痛点

阿泽🧸

Service Mesh 7月月更

【愚公系列】2022年7月 Go教学课程 005-变量

愚公搬代码

7月月更

一个酷酷的“幽灵”控制台工具

为自己带盐

C# 控制台 7月月更

算法入门很简单:算法题的破解之道上篇

宇宙之一粟

算法 7月月更

一个开发者自述:我是如何设计针对冷热读写场景的 RocketMQ 存储系统

阿里巴巴中间件

阿里云 RocketMQ 云原生编程挑战赛

async / await

Jason199

Async await 7月月更

windows下设置TortoiseGit客户端连接git不用每次输入用户名和密码

乌龟哥哥

7月月更

想要在Linux中只显示隐藏文件,用对ls就可以实现

wljslmz

Linux 运维 7月月更

自律,提升自制力原来也有方法

沃德

程序员 7月月更

Salesforce 容器化 ISV 场景下的软件供应链安全落地实践

阿里巴巴中间件

阿里云 容器 云原生 安全

Android 面试知识点

沃德

android 程序员 7月月更

基于华为云IOT设计智能称重系统(STM32)

DS小龙哥

7月月更

谈谈讲清楚这件事的重要性

阿里巴巴中间件

阿里云 技术 云原生

Ubuntu22.04 源码安装Python3.10

IT蜗壳-Tango

7月月更

LinkedBlockingQueue源码分析-初始化

zarmnosaj

7月月更

当我们谈论不可变基础设施时,我们在谈论什么

阿里巴巴中间件

阿里云 容器 云原生 托管

Java 9 中的字符串(String)压缩的改进

HoneyMoose

简单介绍一下闭包及它的一些应用场景

是乃德也是Ned

7月月更

鸿蒙智联汽车【1.0】

坚果

HarmonyOS OpenHarmony 7月月更

AI人脸编辑让Lena微笑

逝缘~

华为云 AI Gallery 7月月更

iOS基础--属性(setter方法 、getter方法、点语法、@property)

NewBoy

前端 移动端 iOS 知识体系 7月月更

electron添加SQLite数据库

空城机

sqlite Electron 7月月更

全链路压测:影子库与影子表之争

阿里巴巴中间件

阿里云 云原生 全链路压测 影子

Nginx 主机配置文件中如何配置能够支持 IPv4 和 IPv6

HoneyMoose

Qt 实现容器的DELETE的方式

小肉球

qt 7月月更

【问道】编译原理解析

小明Java问道之路

编译原理 编译器 汇编语言 7月月更 Graal编译器

科普达人丨一文弄懂什么是云计算?

阿里云弹性计算

云计算 阿里云 虚拟化 神龙架构 IT资源利用

用Elm语言降低失败的风险_JavaScript_David Iffland_InfoQ精选文章