2016-02-13 97 views
9

要学习新的ES6语法,我一直试图重构一些JS代码。ES6语法导入电子(需要..)

尽管整个导入/导出方法让我感到困惑。

如何将此require声明更改为ES6?

我见过this answer但:

  1. 它不工作
  2. 它并不真正似乎很有ES6-sque

有什么想法?

+0

你在哪里打算使用ES6语法?在浏览器? – acdcjunior

+0

在电子应用 – c1c1c1

回答

5

虽然我对整个导入/导出方法非常困惑,

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

  1. 它不工作
const electron = require('electron'); 
const remote = electron.remote; 

是完全一样的,你有什么

如果你的工作,其他的意志为好。但是,我会坚持你的。

  • 它并不真正似乎很有ES6-sque
  • 谁在乎呢? Node本身不支持ES6 importsexports,并且CommonJS模块应该如何映射到ES6模块并不是非常清楚。无论如何,如果您只是为Node写信,我建议坚持使用require


    你可以尝试

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

    是的,我明白你的意思。谢谢您的帮助! – c1c1c1

    5

    似乎进口没有在任一节点实施 6或Chrome 51电子也不会支持他们,根据这个帖子: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/

    但是你可以使用与需要钩巴贝尔: http://babeljs.io/docs/usage/require/

    进行自动编译每个需要的模块,所以你将能够使用进口。 当然给电子(需要巴贝尔的一个)脚本没有被编译,所以你需要做一个引导:

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

    在外壳(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

    +0

    我忘记了这个链接:babel预设为电子https://www.npmjs.com/package/babel-preset-electron –