如何在coffeescript中启用和声语法支持?

时间:2014-07-11 14:33:25

标签: javascript coffeescript yield ecmascript-harmony

我使用带有--harmony标记的node.js(0.11.13)并使用了function *()yield个关键字。

我试图在coffeescript的帮助下简化我在node.js上的开发,到目前为止它工作得很好但是我遇到了问题yield并声明了一个生成器 - 它抱怨'保留关键字产量'

有什么想法吗?

4 个答案:

答案 0 :(得分:5)

打开黑色维度的大门的另一种方法是:

co = require 'co'
sleep = require 'co-sleep'

co(`function*(){1`
    console.log 'hi!'
    `yield sleep(1000)`
    console.log 'bye!'
`1}`)()

这似乎是完全有效的咖啡脚本,但是,webstorm cofeescript插件会对错误感到愤怒,但它确实有效。

以下解决方案(香草咖啡和酱)也是可能的:

co      = require 'co'
sleep   = require 'co-sleep'
$       = (cor) -> cor
$yield  = (cor) -> cor

do co $ ->
    console.log "hi!"
    $yield sleep(1000)
    console.log "bye!"

gulp.task 'node-js', ->
    gulp.src config.srcServerJs, {base: config.srcServerJsBase}
    .pipe plumb()
    .pipe coffee()
    .pipe replace(/\$\(function\(/g, '\$(function*(')
    .pipe replace(/\$yield\(/g, 'yield (')
    .pipe gulp.dest(config.dstServerJs)

魔术:IDE中没有错误:)

<强>更新 在尝试和阅读了很多关于咖啡,ecma6及其未来的内容之后,我决定放弃coffeescript并与ECMA6一起支持node.js和客户端的traceur

答案 1 :(得分:4)

现在实际上可以在coffeescript 1.9.x

中使用yield

来自coffeescript's website

  

CoffeeScript函数还通过yield关键字支持ES6生成器函数。没有function*(){}废话 - CoffeeScript中的生成器只是一个产生的函数。

示例:

perfectSquares = ->
  num = 0
  loop
    num += 1
    yield num * num
  return

答案 2 :(得分:3)

使用(例如)我的前叉:https://github.com/xixixao/coffee-script

还有其他语法不同。

答案 3 :(得分:1)

生成器支持(yield关键字)不久前登陆主分支,但还没有发布。

您可以通过NPM获取它并将其作为依赖项放在package.json中:

npm i jashkenas/coffeescript