2016-08-20 51 views
2

我有现成的require等效需要在ES6一个子属性导入

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

我开始使用巴贝尔的ES6,并想代替import这一点。到目前为止,我有:

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

这是丑陋的,我不禁觉得有一个更好的方法来做到这一点。我只需要这里需要对话框。我如何在一行中得到它?

+1

不幸的是,我不认为有一种使用ES6导入的方法也可以进行深度解构,所以你现在所做的与现在可以做的一样好。 –

+0

相关:[ES6 - 从'require'转换为'import'](http://stackoverflow.com/q/30898686/218196) –

回答

1

没有什么'丑陋的',这是怎么东西应该写在ES6。

import s应该是静态分析没有脚本评估,支持的语法是有限的。默认导入不能在import语句中解构,语法的所有变种are listed in the reference

可以写成

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

ECMAScript的模块语法不允许深解构。事实上,它根本不会解体。导入语句在模块之间创建活动绑定。

这是Ben Nadel写的很棒的博客文章。通过做

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

electron是这样的结合http://www.bennadel.com/blog/3131-the-import-statement-creates-a-live-view-of-modules-in-es6-and-typescript-in-angular-2.htm

因此:应该阐明绑定一些轻。通过做解构赋值dialog是正常常数,它不会被“绑定”到电子模块(它不会更新)。