在ES6导入中需要子属性的等效项

时间:2016-08-20 22:05:44

标签: javascript import ecmascript-6 require

我现有require

const {dialog} = require('electron').remote;

我开始使用Babel for ES6,并希望import改为使用它。到目前为止,我有:

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

这很难看,我不禁觉得有更好的方法可以做到这一点。我只需需要此处的对话框。我如何在一行中获得它?

2 个答案:

答案 0 :(得分:2)

ECMAScript模块语法不允许深度解构。事实上,它根本没有结构。 Import语句在模块之间创建实时绑定。

这是由Ben Nadel撰写的精彩博文。它应该阐明绑定:http://www.bennadel.com/blog/3131-the-import-statement-creates-a-live-view-of-modules-in-es6-and-typescript-in-angular-2.htm

通过做

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

electron具有这样的约束力。通过进行解构赋值dialog是正常常数,它不会被约束"电子模块(它不会更新)。

答案 1 :(得分:1)

没有什么“丑陋的”,这就是应该如何用ES6编写的东西。

应该在没有脚本评估的情况下静态分析

import,支持的语法是有限的。默认导入无法在import语句中进行解构,所有语法类型are listed in the reference

可以写成

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