Geschweifte Klammern (Klammern) im Knoten erfordern eine Anweisung

87

Ich versuche, den Unterschied zwischen den beiden erforderlichen Aussagen zu verstehen.

Was genau ist der Zweck des { }s umwickelt ipcMain?

const electron = require('electron')

const {ipcMain} = require('electron')

Beide scheinen den Inhalt des Elektronenmoduls zuzuweisen, funktionieren aber offensichtlich unterschiedlich.

Kann jemand etwas Licht ins Dunkel bringen?

AproposArmadillo
quelle

Antworten:

129

Das zweite Beispiel verwendet die Destrukturierung.

Dadurch wird die spezifische Variable (einschließlich Funktionen) aufgerufen, die aus dem erforderlichen Modul exportiert wird.

Zum Beispiel (functions.js):

module.exports = {
   func1,
   func2
}

ist in Ihrer Datei enthalten:

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

Jetzt können Sie sie einzeln anrufen,

func1()
func2()

im Gegensatz zu:

const Functions = require('./functions')

werden mit Punktnotation aufgerufen:

Functions.func1()
Functions.func2()

Hoffe das hilft.

Informationen zur Destrukturierung finden Sie hier . Sie ist ein sehr nützlicher Bestandteil von ES6 und kann sowohl mit Arrays als auch mit Objekten verwendet werden.

alexi2
quelle
16

Mit const electron = require('electron')dem ipcMainModul wird als verfügbar seinelectron.ipcMain

Mit const {ipcMain} = require('electron')dem ipcMainModul wird als verfügbar seinipcMain

Dieses Konstrukt wird als Objektdestrukturierung bezeichnet und erreicht dasselbe wie das Python-Konstrukt

from library import ...

In seiner Grundform können Sie direkt auf die Eigenschaften eines Objekts verweisen

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)

Prüfen:

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

Mit der Destrukturierungszuweisung können Sie mehrere Eigenschaften eines Javascript-Objekts importieren, z.

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

Wenn Sie eine Eigenschaft verwenden, die nicht vorhanden ist, wird diese auf gesetzt undefinedund Sie erhalten keine Fehlermeldung.

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

Siehe auch: Was bewirken geschweifte Klammern in den var { … } = …Anweisungen?

user2314737
quelle