2016-02-13 12 views
9

Aby nauczyć się nowej składni ES6, próbowałem zmienić kod JS.Składnia importu ES6 Elektron (wymagaj ..)

Jestem całkowicie zdezorientowany przez wszystkie metody importu/eksportu.

Jak zmienić to stwierdzenie nana ES6?

Widziałem this answer ale:

  1. To nie działa
  2. To naprawdę nie wydaje się być dużo ES6-sque

Wszelkie myśli?

+0

Gdzie masz zamiar używać tego składni ES6? W przeglądarce? – acdcjunior

+0

W aplikacji Electron – c1c1c1

Odpowiedz

5

Jestem całkowicie zdezorientowany przez wszystkie metody importu/eksportu.

Mieszanie różnych systemów modułów może rzeczywiście być mylące.

  1. To nie działa
const electron = require('electron'); 
const remote = electron.remote; 

jest dokładnie takie samo jak to, co masz

Jeśli twoja praca, a druga będzie równie dobrze. Jednak po prostu trzymałbym się twojego.

  1. naprawdę nie wydaje się być dużo ES6-sque

Kogo to obchodzi? Węzeł nie obsługuje natywnie ES6 imports i exports i nie jest super jasne, w jaki sposób moduły CommonJS powinny mapować do modułów ES6. Polecam trzymać się z require, jeśli mimo to piszesz tylko dla węzła.


Można spróbować zrobić

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

tak, widzę co masz na myśli. Dzięki za pomoc! – c1c1c1

5

Wydaje przywóz nie są realizowane w każdym węźle 6 lub Chrome 51 tak Electron również nie obsługuje ich, według tego postu: https://discuss.atom.io/t/does-electron-support-es6/19366/18

A także ostatni dokument doc nie używa importu, używają one destructive składnia:

const { BrowserWindow } = require('electron').remote 
// or 
const { remote } = require('electron') 
const { BrowserWindow } = remote 

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

Ale można użyć Babel z hakiem wymagać: http://babeljs.io/docs/usage/require/

Być auto kompilacji wszystkich wymaganych modułów, dzięki czemu będą mogli korzystać z importu. Oczywiście skrypt podany do elektronu (ten, który wymaga Babel) nie jest kompilowany więc trzeba dokonać bootstrap:

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

W muszli (sh):

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

Następnie w aplikacji możesz napisać:

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

można także importować tylko moduł zdalnego:

import { remote } from 'electron'; 

Ale można importować tylko zarówno w jednym stwierdzeniem:

import electron, { remote } from 'electron' 

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

playground

+0

Zapomniałem tego linka: Babel preset dla elektronu https://www.npmjs.com/package/babel-preset-electron –

Powiązane problemy