11

所以我今天才发现 Angular 2.0 即将问世,他们使用 ECMAScript 6,但将其编译为 5,等等,等等,等等。

这(使用 ECMAScript)将如何影响使用?它将如何与我用来调用其 API的 JavaScript 兼容?我的意思是,将不同的语言(ES、JS)写在一起?

对它的工作原理感到困惑。帮助表示赞赏。

编辑

抱歉@Joseph,如果我的问题不够清楚,但我也(主要)想知道 ECMAScript 5 如何在浏览器中运行,并且上面的第二段将其保留在上下文中。

JavaScript 人员如何使用 Angular 2.0?ES 如何与 JS 代码一起工作?

文档

虽然 Angular 将在 ES6 中,但如果您不想升级,您仍然可以在 ES5 中编写。编译器生成可读的 JS,并且有人类感知的扩展类似物。

我怀疑 ES 可以由 JS 解释器运行(?)

4

1 回答 1

16

AngularJS 2.0 用 ECMAScript 重写?

似乎您将 ES 误认为是另一种语言。

ES (ECMAScript)是 JavaScript 语言所基于的标准。它基于它定义了 JS 和其他语言的规则和行为。ES5 是第 5 个修订版,ES6 是撰写本文时即将发布的修订版。

他们正在使用 ECMAScript 6,但将其编译为 5

今天几乎每个浏览器都与 ES5 兼容,而与 ES6 不兼容。像新的 API 和非常方便的语法一样使用 ES6 是有动机的——但这些在 ES5 中不存在。为了让一个人现在仍然可以使用 ES6,需要将 ES6 代码转译为 ES5。

这意味着 Angular 是用 ES6 语法编写的,但是代码被转译(转换)回 ES5 等价物,以使当前的浏览器能够运行它。

这是一个做同样事情的代码示例,一个用 ES6 编写,另一个用 ES5 编写,由转译器生成。请注意 ES6 版本相比 ES5 版本的便利性。

// ES6
var seattlers = [for (c of customers) if (c.city == "Seattle") { name: c.name, age: c.age }];

// ES5
var seattlers = customers.filter(function (c) {
  return c.city == "Seattle";
}).map(function (c) {
  return {
    name: c.name,
    age: c.age
  };
});

这将如何影响使用?

它将如何与我用来调用其 API 的 JavaScript 兼容?

将不同的语言写在一起

他们(Angular)在即将发布的版本中编写了它,然后将其转换回可以在当前浏览器上运行的当前版本。在消费者部分没有额外的努力。此举可能是为了让代码“具有前瞻性”,为今天的未来版本准备代码库。

于 2014-11-13T01:29:23.677 回答