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

时间:2016-02-13 00:07:27

标签: javascript import ecmascript-6 electron

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

我对整个导入/导出方法感到困惑。

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

var remote = require('electron').remote

我见过this answer但是:

  1. 不起作用
  2. 看起来并不太像ES6-sque
  3. 有什么想法吗?

3 个答案:

答案 0 :(得分: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

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

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

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

// bootwithbabel.js
require("babel-register");
require( process.argv.splice(2) );

在shell(sh)中:

electron bootwithbabel.js app.es
alias electrones="electron bootwithbabel.js "
electrones coron.es // ^^

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

import electron from 'electron';
import { remote } from 'electron';

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

import { remote } from 'electron';

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

import electron, { remote } from 'electron'

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

playground

答案 1 :(得分:7)

  

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

混合使用不同的模块系统确实令人困惑。

  
      
  1. 它不起作用
  2.   
const electron = require('electron');
const remote = electron.remote;

与你拥有的完全相同

var remote = require('electron').remote

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

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

谁在乎? Node本身并不支持ES6 importsexports,并且不太清楚CommonJS模块应该如何映射到ES6模块。如果您只是为Node编写,我建议坚持使用require

你可以尝试来做

import electron from 'electron';
const {remote} = electron;

答案 2 :(得分:0)

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

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