为什么在 Electron 项目中需要 Babel

Why is Babel needed in an Electron project

我对整个 Javascript 生态系统感到很困惑。我正在尝试使用 Electron,这似乎是一种利用节点和 Chrome 的力量创建跨平台应用程序的有前途的方法。我创建了一个小应用程序并使用了一些 "modern"(这让 C# 程序员发笑)javascript 概念作为 lambda,它开箱即用(我认为这是自然的,因为我有最新的节点版本)。然后我尝试下一步,我在示例中看到了很多样板,例如使用 Babel。

为什么我需要这个?

如果电子在一个最新的、预先知道的环境中工作,节点和 chrome 是最新的,如果我把它捆绑在一个应用程序中,为什么我不应该直接编码在 ES 中?

如果你只想要 electron 中的 ES7 功能,你不需要 Babel。您有两个进程正在进行主进程和渲染进程。

主要过程:

  • 使用节点(当前节点版本 v7.9.0 on electron v1.7.x)
  • 支持ES6/ES7,覆盖率99%,例外情况:
    • RegExp.prototype.compile不return这个
    • Symbol.toStringTag 不影响现有的内置函数
    • Array.prototype.values(反正没人支持)

渲染过程:

  • 使用 chromium(当前 chromium 版本为 58)
  • 支持 ES6 99% 和覆盖率约为 85% 的 ES7,您可以通过 new BrowserWindow({ webPreferences: { experimentalFeatures: true } }).
  • 启用实验特性标志来增加支持

请注意,我鼓励您使用 electron 用于开发的相同版本的节点,这将防止不兼容问题。您可以通过查看电子存储库中的 .node-version 文件来检查这一点。在当前版本中,这将是 v7.9.0。

如果你想使用一些更新的函数,比如传播运算符 ...,我的几乎所有项目仍然使用带有 'Stage 0' 预设的 babel原因。

一些用于检查支持的 ES 规范和方法的好列表