【问题标题】:Equivalent of requiring a subproperty in ES6 import相当于在 ES6 导入中需要子属性
【发布时间】:2016-12-27 19:08:56
【问题描述】:

我有一个现有的require

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

我开始在 ES6 中使用 Babel,并想改用 import 这个。到目前为止,我有:

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

这很难看,我不禁觉得有更好的方法来做到这一点。我只是需要这里的对话框。怎么一口气搞定?

【问题讨论】:

标签: javascript import ecmascript-6 require


【解决方案1】:

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

这是 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 是正常的常量,它不会“绑定”到电子模块(它不会更新)。

【讨论】:

    【解决方案2】:

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

    imports 应该在没有脚本评估的情况下进行静态分析,支持的语法是有限的。默认导入不能在import 语句中解构,各种语法are listed in the reference

    可以写成

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

    【讨论】:

      猜你喜欢
      • 2016-06-07
      • 1970-01-01
      • 2015-11-05
      • 1970-01-01
      • 2017-05-01
      • 1970-01-01
      • 2018-04-15
      • 1970-01-01
      相关资源
      最近更新 更多