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(带或不带参数)。