2015-10-19 85 views

回答

5

这是一个node.js问题,没有明确的风帆。是当前版本的node.js支持某些ES2015标准,具体取决于您启动服务器时使用的Node.js版本和标志。

大部分功能已经激活,但使用所有的功能,你会在你的项目文件夹使用node app.js --es_stagingnode app.js --harmony代替sails lift

以下链接提供什么功能目前版本的节点支持,以及如何更新的信息访问它们。

https://nodejs.org/en/docs/es6/

8

您需要检查ES6的兼容性与node.js的,而不是任何框架一样sails.js,快递等

因为在最后的node.js将JavaScript的改变服务器端代码。 因此,您使用的是哪种框架并不重要。

You can use the sails with ES6:

对于ES6兼容性检查kangax.github.io

推荐:

Sails v 0.11.0 or greater

Node v 4.. or greater

npm v 2.14.4 or greater

现在,您可以探索新的Ecmascript6功能。

您将从http://es6-features.org/获得新功能。

TEST:

代码:

ecma6Test:function(req,res,next){ 
    var evens =req.body.evens 
    odds = evens.map(v => v + 1); 
    res.json({sucess:true,'odds':odds}); 
} 

请求:

{"evens":[2,4,6,8,10]} 

响应:

{ 
    "sucess": true, 
    "odds":[3, 5, 7, 9, 11] 
} 
+0

V8团队认为舞台功能并不稳定。但你可以通过--harmony标志来使用它们。但我认为你必须等到他们稳定。 –

2

毗湿奴的答案有你覆盖。

ES6的显式列表功能在最新的节点版本可在这里https://nodejs.org/en/docs/es6/

Which ES6 features ship with Node.js by default (no runtime flag required)?

  • 设(严格模式)
  • 常量
  • 功能的块(严格模式只)
    • 自v8 3.31.74.1开始,块范围声明有意使用非兼容限制严格的模式代码。开发人员应该意识到,随着v8继续向ES6规范合规性发展,这将会发生变化。
  • 类(严格模式)
  • 集合
  • 地图
  • WeakMap
  • 设置
  • WeakSet
  • 类型数组
  • 发电机
  • 二进制和八进制文字
  • 对象字面扩展(简写属性和方法)
  • 承诺
  • 新的String方法
  • 符号
  • 模板串
  • 箭头功能
+0

对不起,格式化。应用程序不是最好的 –

15

SailsJS只是通过ES5语法编写框架并且它不需要支持ES6。

您可以像往常一样使用ES6语法编写项目,并使用Babel \ Traceur \来运行任何操作。

我的流程如下:

  • 创建帆项目;
  • 安装babel作为devDependencies;
  • 更新npm start脚本package.json"start": "babel-node app.js";

就是这样。我可以在我的controllers \ models \ etc中编写ES6 \ 7代码,并通过npm start命令运行服务器。当你用ES5语法编写它时,它就像往常一样工作。

Babel Transpiler

Babel Node

+0

不那么容易。引发错误: /node_modules/source-map-support/source-map-support.js:415 var hasStack =(arguments [1] && arguments [1] .stack); ^ TypeError:无法读取未定义的属性'文件名' – alexmngn

1

还有就是sails-hook-babel钩子,可以先制定出适合您。它不适用于我,正如我在下面解释的那样,但我希望它获得更高的可见度,得到改进,然后这个答案将更具相关性。

目前,从v6.0.1开始,该库将在sails挂接运行后加载文件。这意味着如果您想在例如ES2015中使用ES2015你的config/routes.js文件,你会得到一个语法错误。但正如this issue所建议,它应该适用于例如api文件夹中的文件。