Фигурные скобки (фигурные скобки) в узле требуют оператора

Я пытаюсь понять разницу между двумя утверждениями ниже.

В частности, какова цель { }с обернутыми вокруг ipcMain?

const electron = require('electron')

const {ipcMain} = require('electron')

Они оба, кажется, назначают содержимое электронного модуля, но они, очевидно, функционируют по-разному.

Кто-нибудь может пролить свет?

1 ответ

Решение

Второй пример использует деструктуризацию.

Это вызовет конкретную переменную (включая функции), которая экспортируется из требуемого модуля.

Например (functions.js):

module.exports = {
   func1,
   func2
}

включен в ваш файл:

const { func1, func2 } = require('./functions')

Теперь вы можете позвонить им по отдельности,

func1()
func2()

в отличие от:

const Functions = require('./functions')

вызываются с использованием точечной нотации:

Functions.func1()
Functions.func2()

Надеюсь это поможет.

Вы можете прочитать о деструктурировании здесь, это очень полезная часть ES6 и может использоваться как с массивами, так и с объектами.

С const electron = require('electron') ipcMain модуль будет доступен как electron.ipcMain

С const {ipcMain} = require('electron') ipcMain модуль будет доступен как ipcMain

Эта конструкция называется деструктуризацией объекта и достигает того же, что и конструкция Python.

from library import ...

В своей основной форме он позволяет напрямую ссылаться на свойства объекта

var o = {prop1: '1', prop2: 2}
var {prop1, prop2} = o
console.log(prop1) // '1' (same as o.prop1)
console.log(prop2) // 2 (same as o.prop2)

Проверьте:

const {ipcMain} = require('electron')
const myElectron = require('electron')
const myipcMain = myElectron.ipcMain
console.log(myipcMain===ipcMain) // true

Вы можете использовать назначение деструктурирования для импорта нескольких свойств объекта Javascript, например:

const { app, BrowserWindow, ipcMain } = require('electron')

Если вы используете свойство, которое не существует, оно будет установлено в undefined и вы не получите ошибку.

const {app, BrowserWindow, ipcMain, doesntExist} = require('electron')
console.log(doesntExist) // undefined

Смотрите также: Что означают фигурные скобки в var { … } = … заявления делать?

Другие вопросы по тегам