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

Jax*_*era 34 postgresql node.js babeljs pg-promise

我已多次阅读以下文档: Node API Babel 6 Docs

我开始学习pg-promise遵循Learn by Example教程,并且更愿意使用ES6并使用Babel转换到ES5,但我不确定一些事情:

  1. 安装babel-core后,我会使用什么预设以及在哪里/如何配置它?

文档对我来说不清楚我放了哪个文件: require("babel-core").transform("code",options); 进入该代码的哪些部分是占位符.当我使用该代码时,我只是在某处使用它然后我可以在每个其他文件中使用ES6吗?这将如何实现?

  1. 我读了这个.babelrc文件,想确认实际的文件名是否是".babelrc",或者如果那只是文件扩展名和我项目的根目录相关的地方我放了那个文件..怎么办我链接到它?

  2. 如果我正在使用pg-promise我应该使用ES6和Babel还是会运行:npm install如pg-promise 的测试部分所描述的那样足够并试图使用ES6来创建更多问题?

如果在我的服务器端开发期间需要,我希望利用let和const.

  1. 是否存在节点+ babel + pg-promise服务器设置的标准文件结构?

编辑 值得注意的是我还使用Babel-Node读取了Node JS,并且发现应该避免使用它.最底层的最终答案对我来说并没有多大意义,因为我在跟踪Babel提供的实际文档时遇到了麻烦.

Jax*_*era 45

1.a需要什么预设?

您需要首先npm install babel-core --save-dev使用命令提示符等终端窗口在项目的根目录中安装Babel .

一旦安装,您将需要安装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文件中所需的所有代码以及这些文件中所需/包含的所有文件.

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

npm init在终端窗口内项目的根目录初始化项目时,会创建Package.json

一种方法是:

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

什么是.babelrc?

.babelrc 是文件名,应该与package.json文件(通常是根目录)放在同一个文件夹中,并且当需要babel-core来确定要使用哪个预设或插件时,它将自动"加载".

在里面.babelrc,您需要添加以下代码:

{
  "presets": ["es2015"]
}
Run Code Online (Sandbox Code Playgroud)

3. pg-promise测试部分

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

您无需担心测试中的步骤,只需使用安装中的步骤.测试中的一个涉及dev依赖安装,以便运行测试.pg-promise可以与任何符合Promises/A +规范的promise库一起使用.

4.服务器端项目的标准文件/文件夹结构?

由于每个项目都有独特的需求,因此没有标准的方法来完成这项任务.一个很好的起点是将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 webserver 本指南提供了更多的见解,在此答案的上下文中,显示的代码将放入ES6 config.es6文件中,以下代码将进入Entry server.js文件:

require("babel-core/register");
require("./src/config.es6");
Run Code Online (Sandbox Code Playgroud)

构建同构Web应用程序的过程与此不同,并且可能使用诸如grunt,gulp,webpack,babel-loader等其他示例,其中可以在此处找到.

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

  • @JaxCavalera但不是Require Hook"babel-register"对于生产代码不稳定?人们不应该使用"babel-cli"吗? (2认同)

Isa*_*Pak 6

  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