为什么在 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 规范和方法的好列表
我对整个 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 规范和方法的好列表