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

How to enable harmony syntax support in coffeescript?

本文关键字:和谐 语法 支持 启用 coffeescript      更新时间:2023-09-26

我使用带有--harmony标志的node.js(0.11.13),使用function *()yield关键字。

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

任何想法?

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

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

这似乎是完全有效的咖啡脚本,虽然,webstorm cofeescript插件哭的错误,但它的工作。

还有以下解决方案(香草coffeescript和gulp)是可能的:

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)

magic: no errors in IDE:)

在尝试并阅读了大量关于coffee、ecma6及其未来的资料后,我决定放弃coffeescript,转而使用支持traceur的ecma6 (node.js和客户端)

现在可以在coffeescript 1.9.x中使用yield

来自coffeescript的网站

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

的例子:

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

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

生成器支持(yield关键字)在一段时间前登陆主分支,但尚未发布。

你可以通过NPM获得它,并把它作为一个依赖放在package.json中:

npm i jashkenas/coffeescript