2016-02-13 94 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 –