【问题标题】:CoffeeScript and HarmonyCoffeeScript 和 Harmony
【发布时间】:2015-08-19 07:45:02
【问题描述】:

我正在寻找一个转译来学习,我完全糊涂了。

我正在阅读有关 CoffeeScript 的内容,发现它是一个很好的学习内容,但我并不完全理解。它支持 ES6 吗?我试图找到答案,但我发现的只是比较 CoffeeScript 和 ES6。

然后我去维基百科了解它。 正如维基百科所说:

CoffeeScript 是一种可转译为 JavaScript 的编程语言。它添加了受 Ruby、Python 和 Haskell[1] 启发的语法糖,以增强 JavaScript 的简洁性和可读性

而 ES 是:

ECMAScript 是 Ecma International 在 ECMA-262 规范和 ISO/IEC 16262 中标准化的脚本语言。该语言被广泛用于 Web 上的客户端脚本,以 JavaScript 等几种众所周知的实现形式出现、JScript 和 ActionScript。

它们都是编程语言,但据我所知,ES 是由 JS 实现的,CoffeeScript 是“转换”为 JS 的东西。

所以我有一些未回答的问题:

  1. 我可以在编写 CoffeeScript 时使用所有新的 ECMAScript 功能吗?
  2. 我们会比较 ES6 和 CoffeeScript 吗?

【问题讨论】:

  • JavaScript 和 CoffeeScript 是不同的语言。它编译为 JS 的事实并不意味着它继承了新的 JS 特性和语义。 Coffee 与 JS 非常相似,但其他语言可能非常不同。
  • @elclanrs 我没提到JS和CS是一样的。
  • 所以 1) 您可以使用 API,而不是语法。 2)因为它们是不同的语言。不知道还有什么可以扩展的。
  • @elclanrs 好的。为了更清楚地描述我的问题并添加一些具体的内容:我可以或将能够使用 CoffeeScript 中的生成器或承诺等功能(但使用它自己的语法)

标签: javascript coffeescript ecmascript-6


【解决方案1】:

有两种不同的信息,您可能会混淆:

  • CoffeeScript 转译时是否生成 ES6

    例如CS [a, b] = [b, a] 会编译成 ES6 [a, b] = [b, a] 还是 ES5 ref = [b, a], a = ref[0], b = ref[1];

  • ES6 的特性是否可以在 CoffeeScript 中使用。

    例如是否可以在 CS 中使用set = new Set();以及是否可以使用 ES6 生成器。

现在第一部分是“否”——CoffeeScript 不生成 ES6 代码。第二部分对类库存中的创新表示“是”,但对某些句法扩展如生成器表示“否”。

*) 除非您使用诸如https://www.npmjs.com/package/coffee-script-es6 之类的分叉

【讨论】:

  • CoffeeScript 支持生成器。这些特性不是简单继承的,语法也必须在 CoffeeScript 中实现。
  • @elclanrs:如果“支持生成器”不能通过任何可用的语法生成符合 ES6 的代码,那么它是没有意义的。所以不,主要的 CoffeeScript 实现不支持生成器。
  • 确实有,不知道你的意思...coffeescript.org/#try:f%20%3D%20-%3E%0A%20%20yield%201
  • @Amadan 不支持。但是有机会吗?
  • @elclanrs:很抱歉,我似乎错过了那个发展。
【解决方案2】:

为了便于讨论,ECMAScript 和 Javascript 是相同的。 ECMAScript 是 Javascript 的“正式”名称。 ES6 是它的最新版本。迄今为止,没有浏览器真正完全实现了 ES6。在撰写本文时,您不能直接在浏览器中使用 ES6 功能。

目前人们所做的是编写 ES6,然后通过像 Babel 这样的编译器运行它,将其编译为 ES5 或其他当前浏览器实际支持的 Javascript 早期版本。

CoffeeScript 做同样的事情:它是一种非 Javascript 语言,浏览器不直接支持,但它可以编译为“简单”的 Javascript 以在浏览器中运行。

为什么要做这些事情而不是编写原始 Javascript?因为 ES6 和 CoffeeScript 都为在普通 ES5 中非常冗长的东西提供了更简单的语法。它只是加快了编写代码的速度,并且代码可以更简洁、更具表现力,并且可能更易于阅读和维护。

从历史上看,CoffeeScript 是最先出现的,并且多年来一直提供这种编写代码的模式。 ES6 是最近的发展。 ES6 被正式定为 Javascript 的下一个版本,最终将被浏览器直接支持。 ES6 比 CoffeeScript 有更多的东西,主要是因为它更新并且野心更大。

任你选。

【讨论】:

  • 谢谢。但我不明白:当 ES6 默认出现在所有浏览器中时。这意味着现在 JS 有了新的很酷的特性。那么 CS 会以某种方式更新以实现此功能,还是不会?问这样的问题对吗?
  • 已经在更新中;请参阅我脚注中链接的 fork 实现。
  • @Vad 谁知道?!去向 CS 的开发人员询问他们的路线图。我们不能告诉你。他们没有义务。也许 CS 会枯萎消失,事实上被 ES6+ 取代。
猜你喜欢
  • 2016-07-01
  • 2011-12-08
  • 2013-04-12
  • 2011-12-27
  • 1970-01-01
  • 2014-03-02
  • 1970-01-01
  • 2013-01-08
  • 2012-09-12
相关资源
最近更新 更多