如何使用 Node JS 设置 Babel 6 以在我的服务器端代码中使用 ES6?

How do I setup Babel 6 with Node JS to use ES6 in my Server Side code?

我已多次阅读以下网址提供的文档: Node API Babel 6 Docs

我开始按照 Learn by Example 教程学习 pg-promise,并且更喜欢使用 ES6 并使用 Babel 转换为 ES5,但我不确定一些事情:

  1. 安装 babel-core 后,我使用什么预设以及where/how我如何配置它才能工作?

我不清楚文档中我将 require("babel-core").transform("code", options); 放入哪个文件以及放入什么该代码的一部分是占位符。当我使用该代码时,我是否只在某处使用一次,然后我就可以在所有其他文件中使用 ES6?这将如何实现?

  1. 我阅读了有关此 .babelrc 文件的信息,想确认实际文件名是否为“.babelrc”,或者这是否只是文件扩展名以及与项目根目录相关的位置我应该把那个文件..和我如何 link 它?

  2. 如果我正在使用 pg-promise,我应该使用 ES6 和 Babel 还是 运行:按照 Testing[=39] 中所述进行 npm 安装=] pg-promise 部分就足够了,尝试使用 ES6 会产生更多问题吗?

如果在我的服务器端开发过程中出现需要,我希望利用 let 和 const。

  1. 是否有用于 node+babel+pg-promise 服务器设置的标准文件结构?

编辑 值得注意的是,我还阅读了 并发现应该避免使用它。由于类似的原因,我在遵循 Babel 提供的实际文档时遇到了问题。最底部的最终答案对我来说并没有真正意义。

我认为您应该使用诸如 grunt 或 gulp 之类的工具来管理所有 "build" 任务。它会自动为您完成,您不会出错。

只需一条命令,您就可以将代码转换为 babel ES2015 并启动您的应用程序。

我建议你看看this simple project。 (只需安装 node_modules 并启动 npm start 以启动 app.js 文件)

但是,如果你真的想手动使用 babel,

  • .babelrc是文件名,可以在this project (redux)中看到一个例子

  • .babelrc是一个配置文件,如果你想看看它是如何工作的,你可以查看this package.json (always redux)

  • 实际上我知道没有标准的方法。如果需要,您可以使用下面的项目框架,并发送拉取请求来改进它:-)

1.a需要什么预设?

您需要先使用终端 window 在项目的根目录中安装 Babel npm install babel-core --save-dev,例如命令提示符。

安装后,您需要安装 es2015 预设npm install babel-preset-es2015 --save-dev。 Babel-Core 是 Promises/A+ 合规的 但由于错误处理不佳而不理想 使用,因此应使用 Bluebird 等库而不是为了这个目的。为了转译,仍然需要安装 babel-core 并且 es2015 启用 ES6->ES5 转译,所以你可以使用 let 和 const 等奇特的东西

1.b 放在哪里 require("babel-core");?

相反,请使用 require("babel-core/register"); 并将其放入通常称为 "server.js"Entry 文件中。 server.js 文件需要专门使用 CommonJS (ES5)。

通过使用 "require" 语句,它将对 Entry 文件中需要的所有代码应用所有相关转换,并且所有文件都 required/included 到这些文件中。

您指向 "main": 部分下 package.json 内的 Entry 文件。

Package.json is created when you initialise the project with npm init at the root directory of your project inside the Terminal Window

一种方法是:

  • 入口文件 - server.js
  • server.js - 需要 {babel-core 和主要的 ES6 文件:config.js/jsx/es6/es}
  • config.es6 - 使用 ES6 并包含(要求)所有其他项目文件,这些文件也可以使用 ES6,因为它们通过加载到 "config" babel-core直接编译的文件

2。 .babelrc 是什么?

.babelrc 是文件名,应该放在与 package.json 文件相同的文件夹中(通常是根目录),当需要 babel-core 时,它​​会自动 "load"确定要使用的预设或插件。

.babelrc 中,您需要添加以下代码:

{
  "presets": ["es2015"]
}

3。 pg-promise 测试部分

开发者的直接引用最近回答了这个问题

You do not need to worry about steps in the Tests, use only the steps in the install. The one in tests relates to the dev dependency installation, in order to run tests. The pg-promise can work with any promise library compliant with Promises/A+ spec.

4。服务器端项目的标准 File/Folder 结构?

没有标准的方法来完成这项任务,因为每个项目都有独特的需求。一个好的起点是将 Entry 文件放在项目根目录中,ES6 Config 文件放在 "scripts" 或 "src" 子文件夹和下面文件夹中的各个组件。

例如

  • ROOT/server.js
  • ROOT/src/config.es6
  • ROOT/src/component1/files.es6
  • ROOT/src/component2/files.es6

有了这个,Babel 将成功地将所有 ES6 转换为 ES5 并启用对 A+ 兼容承诺的支持。

开始使用 node.js 网络服务器 This Guide 提供了更多见解,在此答案的上下文中,显示的代码将放入 ES6 config.es6 文件中,以下代码将进入 条目 server.js 文件:

require("babel-core/register");
require("./src/config.es6");

构建同构 Web 应用程序的过程与此不同,可能会使用 grunt、gulp、webpack、babel-loader 等,另一个例子是 Found Here.

这个答案结合了这个问题的其他答案提供的几个关键点,以及经验丰富的开发人员的贡献和我自己的个人研究和测试。感谢所有协助制作此答案的人。

  1. 这个答案使用了这个简单的目录结构

    project/server/src/index.js => 你的服务器文件

    project/server/dist/ => babel 将把你的转译文件放在哪里

  2. 安装babel依赖

    npm install -g babel nodemon

    npm install --save-dev babel-core babel-preset-es2015

  3. 将这些 npm 脚本添加到您的 package.json 文件

    "scripts": { "compile": "babel server/src --out-dir server/dist", "server": "nodemon server/dist/index.js }

  4. 在你的项目根目录下创建一个.babelrc文件

    { "presets": "es2015" }

  5. 转译你的目录

    npm run compile

  6. 运行 你的服务器

    npm run server

@makeitsimple

步骤:1

npm install nodemon --save

在项目目录下

步骤:2

yarn add babel-cli

yarn add babel-preset-es2015

步骤:2 在 package.json-> scipts 中将 'start' 更改为以下

start: "nodemon src/server.js --exec babel-node --presets es2015"

步骤:3

yarn start