35

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

我开始按照 Learn by Example 教程学习 pg-promise,并且更愿意使用 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. node+babel+pg-promise 服务器设置是否有标准文件结构?

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

4

4 回答 4

45

1.a 需要什么预设?

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

安装后,您需要安装es2015 预设npm install babel-preset-es2015 --save-devBabel-Core 与 Promises/A+ 兼容,但由于错误处理能力差,因此不适合使用,因此应使用Bluebird等库来代替此目的。为了进行转译,仍然需要安装 babel-core 并且 es2015 启用 ES6->ES5 转译,因此您可以使用像 let 和 const 等花哨的东西。

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

相反,使用require("babel-core/register");并将其放置在通常称为“server.js”的条目文件中。server.js 文件将需要专门使用 CommonJS (ES5)。

通过使用“require”语句,它将所有相关的转换应用于条目文件中需要的所有代码以及这些文件中需要/包含的所有文件。

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

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

一种方法是:

  • 入口文件- 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-promise 测试部分

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

您无需担心测试中的步骤,只需使用安装中的步骤即可。测试中的一个与开发依赖项安装有关,以便运行测试。pg-promise 可以与任何符合 Promises/A+ 规范的 Promise 库一起使用。

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

由于每个项目都有独特的需求,因此没有标准的方法来完成这项任务。一个好的起点是将入口文件放在项目根目录中,将ES6 配置文件放在“scripts”或“src”子文件夹中,并将各个组件放在其下方的文件夹中。

例如

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

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

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

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

构建 Isomorphic web 应用程序的过程与此不同,可能会使用 grunt、gulp、webpack、babel-loader 等另一个示例,可以在此处找到

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

于 2015-11-11T05:38:47.797 回答
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

于 2017-05-10T22:47:32.037 回答
0

我认为你应该使用像 grunt 或 gulp 这样的工具来管理你所有的“构建”任务。它将为您自动化,并且您不会犯错误。

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

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

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

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

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

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

于 2015-11-10T07:32:21.930 回答
0

@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
于 2019-06-21T17:55:48.613 回答