免费下载案例集|20+数字化领先企业人才培养实践经验 了解详情
写点什么

用 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:002406
用户头像

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

关注

评论

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

智能网卡在分布式 SDN 网络的应用与实践 | 龙蜥技术

OpenAnolis小助手

云计算 sdn 龙蜥大讲堂 浪潮数据 智能网卡

详解:瓴羊QuickBI为什么是国内口碑最佳的BI工具

对不起该用户已成仙‖

Weblogic控制台数据源密码的脚本化修改

zhengzai7

Shell 密码 控制台 weblogic 数据源

Nginx+Uwsgi+Django+Mysql部署项目

zhengzai7

MySQL Linux mysqldump 数据备份

关于商品推荐方法及系统的思考

zhengzai7

推荐系统 本质

区块链开发平台——以太坊概念及业务流程

TiAmo

区块链 智能合约 以太坊

数字化转型与架构-规划篇|“百变”流程图

数字随行

数字化转型

安装使用舞台租赁LED显示屏的8大事项

Dylan

测试 安装 结构 LED显示屏

深入C++常用的三个智能指针

芯动大师

Centos7.6安装FTP

百度搜索:蓝易云

Linux centos 运维 云服务器 ftp

Centos7安装安装部署docker

百度搜索:蓝易云

云计算 Linux 运维 云服务器 更新系统

Centos7系统安装wget

百度搜索:蓝易云

centos https HTTP ftp wget

微服务架构在前端开发中的应用

没有用户名丶

时序数据库 TDengine 与 WhaleStudio 完成相互兼容性测试认证

爱倒腾的程序员

Docker学习路线4:Docker基础知识

小万哥

Java c++ Go Docker 容器

如何用Three.js + Blender打造一个web 3D展览馆

vivo互联网技术

three.js blender 3D展览馆 gltf/glb模型 渲染调优

Sevlet规范:HttpServlet类 和 HttpServletRequest接口 源码解析

EquatorCoco

前端 开发 HTTP

python使用pivottablejs生成图表

阿呆

Python 图表 pivottablejs

我和“华为云”有个约会

YG科技

使用华为云开发者插件一键部署应用到ECS

YG科技

Git代码管理、提交、问题、仓库创建与管理

zhengzai7

git 代码管理

weblogic基本概念、安装、创建域、服务器、数据源、部署应用

zhengzai7

weblogic

linux环境用mysqldump定时备份Mysql数据

zhengzai7

MySQL mysqldump

插件界的全家桶!对接华为云能力就用它了!

YG科技

智慧化考虑运用数据、信息、知识及反馈机制提升微表情识别准确度

zhengzai7

人工智能 DIKW

大模型的“第一性原理”:技术创新与社会价值的接轨

脑极体

大模型

基础推荐算法概述

zhengzai7

推荐系统 推荐算法

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