web-dev-qa-db-fra.com

Importation de la syntaxe ES6 Electron (nécessite ..)

Pour apprendre la nouvelle syntaxe ES6, j'ai essayé de refactoriser du code JS.

Cependant, je suis absolument confus par toutes les méthodes d'importation/exportation.

Comment puis-je changer cette instruction require en ES6?

var remote = require('electron').remote

J'ai vu cette réponse mais:

  1. Ça ne marche pas
  2. Cela ne semble pas vraiment être beaucoup ES6

Des pensées?

19
c1c1c1

Il semble que les importations ne soient pas implémentées dans Node 6 ou Chrome 51 donc Electron ne les prend également pas en charge, selon cet article: https://discuss.atom.io/t/does-electron-support-es6/19366/18

Et aussi le dernier doc électronique n'utilise pas les importations, ils utilisent la syntaxe de déstructuration :

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

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

Mais vous pouvez utiliser babel avec le hook requis: http://babeljs.io/docs/usage/require/

Pour être compiler automatiquement chaque module requis afin que vous puissiez utiliser les importations. Bien sûr, le script donné à electron (celui qui nécessite babel) n'est pas compilé, vous devez donc faire un bootstrap:

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

En coquille (sh):

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

Ensuite, dans votre application, vous pouvez alors écrire:

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

Vous pouvez également importer uniquement le module distant:

import { remote } from 'electron';

Mais vous ne pouvez importer les deux que dans une seule instruction:

import electron, { remote } from 'electron'

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

aire de jeux

13
Thomas Di G

Cependant, je suis absolument confus par toutes les méthodes d'importation/exportation.

Mélanger différents systèmes de modules peut en effet prêter à confusion.

  1. Ça ne marche pas
const electron = require('electron');
const remote = electron.remote;

est exactement le même que ce que vous avez

var remote = require('electron').remote

Si le vôtre fonctionne, l'autre aussi. Cependant, je resterais simplement avec le vôtre.

  1. Cela ne semble pas vraiment être beaucoup ES6

On s'en fout? Node ne prend pas en charge ES6 imports et exports en mode natif et il n'est pas très clair comment les modules CommonJS doivent être mappés aux modules ES6. Je recommande de rester avec require si vous écrivez uniquement pour Node de toute façon.


Vous pourriez essayer à faire

import electron from 'electron';
const {remote} = electron;
6
Felix Kling