装箱百万奖金,第六届全国工业互联网数据创新应用大赛火热报名中! 了解详情
写点什么

AtScript:又一门编译成 JavaScript 的语言

  • 2014-10-28
  • 本文字数:939 字

    阅读完需:约 3 分钟

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 )关注我们,并与我们的编辑和其他读者朋友交流。

2014-10-28 07:276807
用户头像

发布了 1008 篇内容, 共 346.5 次阅读, 收获喜欢 330 次。

关注

评论

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

自动驾驶感知功能一般都有啥?(28天写作 Day9/28)

mtfelix

自动驾驶 28天写作

不确定怎么选择,该怎么办?

Justin

不确定性 心理学 决策 28天写作

聊聊“公平感”

熊斌

学习 企业文化 管理 管理工具 28天写作

架构师训练营第十三周作业1

韩儿

28天瞎写的第二百二十天:独立设计维哈柯文云输入法的故事

树上

28天写作

mvn install & mvn package

哼干嘛

微信视频号知识地图 | 视频号28天(10)

赵新龙

28天写作

性能优化-3

raox

架构师训练营第十三周作业

丁乐洪

实时数仓|架构设计与技术选型

大数据老哥

大数据 实时数仓

Reactive Spring实战 -- WebFlux使用教程

binecy

响应式编程 Reactive Spring

HDFS杂谈:ACL访问控制列表

罗小龙

hadoop hdfs acl 28天写作

生产服务器内存泄漏的排查过程与优化解决方案

冰三郎

Java jdk 问题排查 jetty

第二课@听课笔记

糯米~

【CSS】多重边框

德育处主任

CSS css3 html/css CSS小技巧 28天写作

架构师训练营第 13 周课后练习

菜青虫

再理解控制反转/依赖倒置

luojiahu

控制反转

概率论DEMO

rainbow

股票作手回忆录读书笔记

.

28天写作

Spring源码-@Configuration注解解析

魔曦

Redis 学习笔记 05:整数集合

架构精进之路

redis 七日更 28天写作

架构师训练营第 13 周学习总结

菜青虫

架构师训练营第十三周作业2

韩儿

关于产品研发管理-《培思的力量》

Man

数字化转型 产品研发

项目管理系列(4)-另类减肥法

Ian哥

28天写作

绩效管理,上下同心者胜(一)

一笑

管理 绩效 28天写作

读《一入阿里“误终生”》,我喜欢上了小马哥

李忠良

28天写作

春天到底会在何时抵达「幻想短篇 9/28」

道伟

28天写作

药物研发的商业模式问题

lidaobing

28天写作 药物研发

第十三周作业

Jack

使用 Go Modules

Rayjun

go modules Go 语言

AtScript:又一门编译成JavaScript的语言_JavaScript_谢丽_InfoQ精选文章