JavaScript 有一个庞大、繁荣的社区,已经成为事实上的浏览器语言。但它缺少一些功能,使它难以应用于大型应用程序的开发。正是由于这个原因,才出现了 TypeScript 和 Dart 。近日, AngularJS 创建者 Misko Hevery 和 DurandalJS 创建者 Rob Eisenberg 联合发布了《 AtScript 入门(草稿)》。该文指出,AtScript 的目标同样是增加 JavaScript 缺少的功能。它从以下几个方面对 JavaScript 进行了增强:
- 类型注解
- 字段注解
- 元数据注解
- 支持注解的类型内省
该过程遵循如下几项原则:
- 以 ECMAScript 6 为基础
- 向后兼容——ES6/ES5 是 A tScript 的严格子集,上述增强都以不破坏 ES6/5 的现有语法或语义为前提。对于任何编写过 ES6/5 代码的开发人员而言,AtScript 很容易使用。他们常用的代码不做任何更改就可以用于 AtScript。
- 熟悉的语法——一些符号的意义与其它语言相同。如在 AtScript 中,“@”用于指示元数据注解,Java、Dart 及其它一些语言也有同样的用法。
- 语义无关——“语义探讨(semantic discussion)”及断言系统不在 AtScript 范围内。
为了开发出更易维护、更易理解的 Angular 代码,Angular 团队一年前开始研发 AtScript。目前,他们正基于 AtScript 语法进行 Angular v2 的开发。正在进行中的工作包括:Traceur 转换编译器和 RTTS 库。其中,前者是基于 traceur 构建的 AtScript 编译器,它能将 AtScript 代码编译成 ES5 及 Dart 代码。
虽然同为 JavaScript 的超集,同样都编译成 JavaScript,但 TypeScript 与 AtScript 相比有以下几点不足:
- 只能进行静态类型分析
- 缺少元数据注解
- 没有提供运行时访问注解的机制
此外,Dart 的开发初衷也是弥补 JavaScript 的不足。但相比之下,Dart 从语义上就与 JavaScript 完全不同。Dart2JS 代码与 JavaScript 代码互操作性很差,开发人员无法在 Dart 中使用现有的 JavaScript 库。
除了构建 Angular 外,AtScript 的开发目标还包括使 Angular 用户可以使用 AtScript 构建他们自己的应用程序。AtScript 独立于 Angular ,也可以用于非 Angular 项目。后续,Angular 团队会考虑将它提交给标准组织。
感谢郭蕾对本文的审校。
给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ )或者腾讯微博( @InfoQ )关注我们,并与我们的编辑和其他读者朋友交流。
评论