2016-08-20 4 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 не позволяет глубоко деструктурирующие. На самом деле он вообще не разрушается. Операторы импорта создают прямые привязки между модулями.

Отличное сообщение в блоге, написанное Бен Наделем. Он должен пролить некоторый свет на переплетах: 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 является нормальной константой, и он не будет «привязан» к электронному модулю (он не будет обновляться).

Смежные вопросы