SailsJS是否支持ES6?

时间:2015-10-19 15:30:22

标签: javascript node.js sails.js ecmascript-6 es2015

有没有办法在ES6中获得sails.js

5 个答案:

答案 0 :(得分:15)

SailsJS只是一个通过ES5语法编写的框架,它不需要支持ES6。

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

我的流程如下:

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

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

Babel Transpiler

Babel Node

答案 1 :(得分:8)

您需要检查ES6与node.js的兼容性,而不是像sails.js,express等任何框架。

因为最后node.js会将javaScript更改为服务器端代码。 因此,使用哪个框架并不重要。

  

您可以使用ES6的风帆:

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

推荐:

  

Sails v 0.11.0或更高

     

Node v 4. 或更高

     

npm v 2.14.4或更高

现在您已准备好探索新的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]
}

答案 2 :(得分:5)

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

大多数功能都已激活,但要使用所有功能,您可以在项目文件夹中使用node app.js --es_stagingnode app.js --harmony而不是sails lift

以下链接提供有关Node支持的当前版本以及如何访问它们的功能的更新信息。

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

答案 3 :(得分:2)

Vishnu的回答让你了解。

最新节点版本中提供的ES6功能的明确列表位于https://nodejs.org/en/docs/es6/

  

默认情况下,哪些ES6功能附带Node.js(不需要运行时标志)?

  • let(仅限严格模式)
  • 常量
  • 功能块(仅限严格模式)
    • 从v8 3.31.74.1开始,有意地使用对严格模式代码的不合规限制来实现块范围声明。开发人员应该意识到,随着v8继续遵循ES6规范,这将发生变化。
  • 课程(仅限严格模式)
  • 集合
  • 地图
  • WeakMap
  • WeakSet
  • 键入的数组
  • 发电机
  • 二进制和八进制文字
  • 对象文字扩展(速记属性和方法)
  • 承诺
  • 新字符串方法
  • 符号
  • 模板字符串
  • 箭头功能

答案 4 :(得分:1)

sails-hook-babel挂钩可能对你有用。它对我不起作用,正如我在下面解释的那样,但我希望它获得更高的可见度,得到改善,然后这个答案将更具相关性。

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