写点什么

Imba:一个新的 Web 开发语言

2015 年 8 月 26 日

学习程序语言是每个程序员的必经之路。可是这个世界上有太多的程序语言,在来不及反应的时候,最近又出现了一门新的编程语言— Imba 。本文针对它的一些新特征,做一个简单的介绍。

Imba 是一种新的 Web 编程语言,用它编写的代码可以编译成高性能和可读的 JavaScript。根据其官网中的介绍,它在语言层次上支持对 DOM 节点的定义、扩展、继承、实例化和渲染。在一些较复杂的应用程序中,例如 TodoMVC ,通过使用更少的代码和一个更小的库,其速度超过 React20 倍以上。在 Imba 的官网上,列举了它的几个突出特点。

复制代码
var number = 42
var opposite = true
var string = "the answer is {number}"
var regex = /answer is (\d+)/
# Functions:
var square = do |x| x * x
# Arrays:
var list = [1, 2, 3, 4, 5]
# Objects:
var math =
square: square
cube: do |x| x * math.square(x)
rand: do Math.random
# Array comprehensions:
var cubes = (math.cube num for num in list)
# Implicit calling:
math.rand.toFixed 2

高的可读性

Imba 设计的初衷之一是让编译后的代码尽可能地易读。所有缩进和评论都被予以保留。他们让编译后的代码更加易于理解和人性化,正如 Imba 官网所形容,“Everything is an expression!”。

高的兼容性

Imba 官网表示,用户可以在 Imba 与 JavaScript 自由切换,绝对可以使用 Imba 开始编写一个项目(或部分),再后来决定继续用编译的 JavaScript 来代替。

类与作用域

就像 JavaScript 一样,Imba 具有清晰的变量声明。这可以让用户细粒度地控制变量可以访问的作用域。在 Sublime Text 插件中变量被着色。在这方面,Imba 也提供了一些比较简单的例子,例如 Scoping.imba 。通过将鼠标停在一个局部变量上,可以查看该变量的所有引用。

标签

Imba 对标签的支持,是其最大的特色之一。关于标签使用的介绍文档现在正在完成中。在那之前,用户可以在一些例子中看到标签的使用,例如 Scroller TodoMVC

循环 / 推导式

Imba 中的循环类似于 CoffeeScript 和 Python 中的数组推导式(Array Comprehension)。它们是表达式,并且可以返回和分配值。作为表达式的循环始终返回一个数组(如 Array#map),但也有一些额外的强大功能,如 Break / Continue(带或不带参数)。

对于一门新的编程语言,Imba 引起了用户广泛的兴趣,在 Hacker News 上,已经有很多用户展开了广泛讨论,有用户将Imba 与其他的语言(如React)进行了简单比较,觉得Imba 有一个很棒的编程框架,而且运行很快,总体上是一门非常cool 的编程语言。如果想与其他用户讨论对Imba 的认识和体验,不妨加入他们。

对于Imba 具体的性能,可能还需要读者亲身体验。最后附上安装链接。有关安装和编辑器集成的详细信息,可以参阅 install.imba 。可以从 GitHub 上的实例 hello-world 开始。同时如果有任何问题或意见,读者还可以在 GitHub 上留言。


感谢徐川对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注 我们,并与我们的编辑和其他读者朋友交流(欢迎加入 InfoQ 读者交流群InfoQ 好读者)。

2015 年 8 月 26 日 19:024682
用户头像

发布了 268 篇内容, 共 102.5 次阅读, 收获喜欢 18 次。

关注

评论

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

Kubernetes v1.21 新特性预览

倪朋飞

Kubernetes 云原生

Python OpenCV 之像素的加减法,取经之旅第 15 天

梦想橡皮擦

3月日更

NA(Nirvana) Chain主打应用而生NA公链NAC公链

区块链第一资讯

区块链推动知识产权数字化,区块链在知识产权中的价值体现

13828808769

区块链+ #区块链#

第8周用户路径数据分析作业

skylar

Redis 如何应对并发访问

escray

redis 极客时间 学习笔记 3月日更 Redis 核心技术与实战

SpringCloud技术专题-Hystrix以及FeginClient异常

李浩宇/Alex

SpringCloud Fegin

2020年刊例花费达1,486亿,数字户外成必然趋势!

󠀛Ferry

七日更 3月日更

C++中结构体的定义

Jack—Li

CSP-J/S必备知识——文件输入输出

Jack—Li

订单和产品的多对多表关系在crudapi系统零代码实现

crudapi

API crud crudapi 一对多 多对一

centos7docker安装

happlyfox

Docker 学习 3月日更

爱奇艺大数据生态的实时化建设

Apache Flink

flink 实时计算

搭建 Mac 系统下的 C++开发环境

Jack—Li

APP 防重放实现

草原狼

安全 API 防重放

如何处理分析Flink作业反压的问题?

华为云开发者社区

实时计算 DWS Flink作业 反压 Sink

AI 事件驱动场景 Serverless 实践

Serverless Devs

Kubernetes 云原生 #Serverless

用户路径地图与漏洞模型

思亭

用户路径地图 漏洞模型

BI大数据分析系统开发,助力企业数字化转型

13828808769

区块链 区块链+ #区块链#

腾讯游戏实时计算应用平台建设实践

Apache Flink

flink

用户路径地图+漏斗模型总结

mas

kylin基本概念和原理

潮湿了我押韵的心情

面向复杂度架构设计的思考

Simon

架构实战营

产品经理训练营 Week11 学习心得

Mai

「产品经理训练营0期」第八周作业

🌟

产品 产品经理训练营

想拿月薪15K的offer,还不赶紧让自己,成为“证书”流?

Adobe国际认证

有趣!一行代码居然无法获取请求的完整URL

Gopher指北

go HTTP

API 工具链研发的理论基础 - 流派

李宇飞

工具链 API

ECMAScript 2018(ES9)新特性简介

程序那些事

JavaScript ecmascript 程序那些事 es9

Rust从0到1-基础概念-控制流

rust 控制流

带你全面认识CMMI V2.0(四)——管理 赋能

渠成CMMI

项目管理 CMMI

「中国技术开放日·长沙站」现场直播

「中国技术开放日·长沙站」现场直播

Imba:一个新的Web开发语言-InfoQ