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

我已经阅读了多次提供的文档: Node API Babel 6 Docs

我开始学习pg-promise,遵循“按示例学习”教程,并且倾向于使用ES6和通过Babel转储到ES5,但是我不确定一些事情:

  1. 在安装babel-core之后,我将使用什么预设以及在哪里/如何configuration此function?

我不清楚我把哪个文件放在文档里: require(“babel-core”)。transform(“code”,options); 进入和代码的哪些部分是占位符。 当我使用这个代码时,我是否只是在某处使用它,然后我可以在其他文件中使用ES6? 这将如何实现?

  1. 我读了这个.babelrc文件,并想确认如果实际的文件名是“.babelrc”,或者如果这只是文件的扩展名,并在哪里与我的项目的根目录,我把该文件..以及如何做我链接到它?

  2. 如果我使用pg-promise ,我应该使用ES6和Babel,或者运行:npm install,如pg-promise的Testing部分中所述,是否足够,并尝试使用ES6来创build更多的问题?

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

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

编辑值得注意的是,我也阅读了巴巴节点的JS节点 ,看到使用这个应该避免。 最后的答案在底部对我来说没有意义,因为我遇到了类似的问题,因为我根据Babel提供的实际文档而遇到麻烦。

1.a需要什么预设?

您将需要首先使用命令提示符等terminal窗口,在项目的根目录下使用npm install babel-core --save-dev安装Babel。

安装完成后,您需要使用npm install babel-preset-es2015 --save-dev安装es2015预设 。 Babel-Core是Promises / A + Compliant, 由于error handling不好而不太理想 ,所以应该使用像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中的"main":部分下的Entry文件。

当您在terminal窗口内的项目根目录下用npm init初始化项目时,会创buildPackage.json

一个办法是:

  • 入口文件 – server.js
  • server.js – 需要{babel-core和主ES6文件:config.js / jsx / es6 / es}
  • config.es6 – 使用ES6,并包含(需要)所有其他项目文件,也可以使用ES6,因为它们被加载到由babel-core直接转换的“config”文件中。

2.什么是.babelrc?

.babelrc是文件名,应该放在与你的package.json文件(通常是根目录)相同的文件夹中,当需要使用babel-core来确定要使用哪个预置或插件时,它将自动“加载” 。

.babelrc里面,你需要添加下面的代码:

 { "presets": ["es2015"] } 

3. pg-promisetesting部分

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

您无需担心testing中的步骤,只使用安装中的步骤。 testing中的一个涉及到dev依赖项安装,以便运行testing。 pg-promise可以与符合Promises / A +规范的任何承诺库一起工作。

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"); 

构build同构Web应用程序的过程与此不同,可能会使用grunt,gulp,webpack,babel-loader等其他示例。

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

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

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

    project/server/dist/ =>巴贝尔将把你的转录文件

  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. 在项目根目录下创build一个.babelrc文件

    { "presets": "es2015" }

  5. 用你的目录传输你的目录

    npm run compile

  6. 运行你的服务器

    npm run server

我想你应该使用一个像grunt或gulp一样的工具来pipe理所有的“构build”任务。 它会自动为你,而不会犯错误。

在一个命令中,您可以将您的代码转换为babel ES2015,然后启动您的应用程序。

我build议你看看这个简单的项目 。 (只需安装node_modules并启动npm start来启动app.js文件)

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

  • .babelrc是文件的名字,你可以在这个项目中看到一个(redux)来举个例子

  • .babelrc是一个configuration文件,如果你想看看它是如何工作的,你可以检查这个package.json(总是REDX)

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