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

标签 node.js postgresql babeljs pg-promise

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

我开始按照通过示例教程学习 pg-promise 并希望使用 ES6 并使用 Babel 转换为 ES5,但我不确定一些事情:

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

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

  1. 我阅读了这个 .babelrc 文件,并想确认实际文件名是“.babelrc”还是只是文件扩展名以及与我的项目的根目录相关的位置文件..以及如何链接到它?

  2. 如果我使用 pg-promise我应该使用 ES6 和 Babel 还是将运行:在 Testing 部分中描述的 pg-promise 的 npm install 就足够了,尝试使用 ES6 会产生更多问题?

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

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

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

最佳答案

1.a 需要什么预设?

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

安装后,您需要使用 npm install babel-preset-es2015 --save-dev 安装 es2015 预设。 Babel-Core 是 Promises/A+ 兼容的,但不理想,因为错误处理很差,所以应该使用 Bluebird 之类的库来代替。为了进行转译,仍然需要安装 babel-core,并且 es2015 启用 ES6->ES5 转译,因此您可以使用像 let 和 const 等花哨的东西。

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

改为使用 require("babel-core/register"); 并将其放在您的 Entry 文件中,该文件通常称为 "server.js"。 server.js 文件将需要独占使用 CommonJS (ES5)。

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

您指向 "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 来确定哪个文件时会自动“加载”将使用预设或插件。

.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。服务器端项目的标准文件/文件夹结构?

由于每个项目都有独特的需求,因此没有标准的方法来完成此任务。一个好的起点是将 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+ 的 promise 。

开始使用 node.js 网络服务器 This Guide提供了更多的洞察力,在这个答案的上下文中,显示的代码将被放入 ES6 config.es6 文件中,以下代码将进入 Entry server.js 文件:

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

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

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

关于node.js - 如何使用 Node JS 设置 Babel 6 以在我的服务器端代码中使用 ES6?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33624104/

相关文章:

macos - Postgresql 安装 : command not found: createdb, psql

sql - 如何让 postgres 判断哪一列导致错误

reactjs - browserify 和 babel 命名空间错误 React

javascript - 在 Rollup 中,创建除 Flow 之外不进行 babel 转译的 ESM 模块

node.js - Node 依赖项不会安装在 Openshift 上

node.js - res.redirect 在 Passport 谷歌回调中被调用两次 - 我无法追踪为什么

php - PostGIS 函数集成在 php 示例中?

javascript - 使用 BookshelfJS/KnexJS 的 NodeJS 脚本中的基本表关联

javascript - 为我的 Angular 页面创建复杂的页眉和页脚

javascript - 在 Angular2 指令中注入(inject) Angular1 服务