ES6语法导入电子(需要..)

c1c*_*1c1 22 javascript import ecmascript-6 electron

为了学习新的ES6语法,我一直在尝试重构一些JS代码.

我完全混淆了整个导入/导出方法.

如何将此require语句更改为ES6?

var remote = require('electron').remote
Run Code Online (Sandbox Code Playgroud)

我见过这个答案,但是:

  1. 它不起作用
  2. 它似乎并不太像ES6-sque

有什么想法吗?

小智 13

根据这篇文章,似乎导入没有在Node 6或Chrome 51中实现,因此Electron也不支持它们:https://discuss.atom.io/t/does-electron-support-es6/19366/18

最后的电子文档也不使用导入,它们使用解构语法:

const { BrowserWindow } = require('electron').remote
// or
const { remote } = require('electron')
const { BrowserWindow } = remote
Run Code Online (Sandbox Code Playgroud)

http://electron.atom.io/docs/api/remote/

但你可以使用带钩子的babel:http: //babeljs.io/docs/usage/require/

要自动编译每个必需的模块,以便您可以使用导入.当然,给电子(需要babel的那个)的脚本没有编译,因此你需要制作一个引导程序:

// bootwithbabel.js
require("babel-register");
require( process.argv.splice(2) );
Run Code Online (Sandbox Code Playgroud)

在shell(sh)中:

electron bootwithbabel.js app.es
alias electrones="electron bootwithbabel.js "
electrones coron.es // ^^
Run Code Online (Sandbox Code Playgroud)

然后在你的应用程序中,你可以写:

import electron from 'electron';
import { remote } from 'electron';
Run Code Online (Sandbox Code Playgroud)

您也可以只导入远程模块:

import { remote } from 'electron';
Run Code Online (Sandbox Code Playgroud)

但是你只能在一个声明中导入:

import electron, { remote } from 'electron'

electron.ipcRenderer.on();
let win = new remote.BrowserWindow({width: 800, height: 600});
remote.getGlobal(name)
Run Code Online (Sandbox Code Playgroud)

操场

  • 只是猜测这个答案已经过时了? (4认同)

小智 7

如今,Electron 的每个版本都带有基本的打字稿支持。因此,如果您在项目中使用 TS 或 TSX 文件,那么您可以在该文件中使用 ES Import 语句。无论你是否使用 ES 模块。

https://www.electronjs.org/blog/typescript


Fel*_*ing 6

我完全混淆了整个导入/导出方法.

混合不同的模块系统确实令人困惑.

  1. 它不起作用
const electron = require('electron');
const remote = electron.remote;
Run Code Online (Sandbox Code Playgroud)

与你拥有的完全一样

var remote = require('electron').remote
Run Code Online (Sandbox Code Playgroud)

如果你的工作,另一个也会.但是,我会坚持你的.

  1. 它似乎并不太像ES6-sque

谁在乎?Node不支持ES6 importsexports本机,并且不太清楚CommonJS模块应该如何映射到ES6模块.require如果你只是为Node写作,我建议坚持下去.


你可以尝试

import electron from 'electron';
const {remote} = electron;
Run Code Online (Sandbox Code Playgroud)