Node.js'deki kıvrımlı parantezler (kaşlı ayraçlar) 'gerektirir' ifadesi


94

Aşağıdaki iki 'gerekli' ifadesi arasındaki farkı anlamaya çalışıyorum.

Spesifik olarak, { }etrafına sarılmış e-postaların amacı ipcMainnedir?

const electron = require('electron')

const {ipcMain} = require('electron')

Her ikisi de electronmodülün içeriğini atıyor gibi görünmektedir , ancak açıkça farklı işlev görmektedirler.

Biri biraz ışık tutabilir mi?

Yanıtlar:


134

İkinci örnek yıkımı kullanır.

Bu, gerekli modülden dışa aktarılan belirli değişkeni (işlevler dahil) çağıracaktır.

Örneğin (functions.js):

module.exports = {
   func1,
   func2
}

dosyanıza dahil edildi:

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

Artık onları ayrı ayrı arayabilirsiniz,

func1()
func2()

aksine:

const Functions = require('./functions')

nokta notasyonu kullanılarak çağrılır:

Functions.func1()
Functions.func2()

Bu yardımcı olur umarım.

Sen kurucuların okuyabilirsiniz burada , bu ES6 çok kullanışlı bir parçasıdır ve diziler yanı sıra nesnelerle kullanılabilir.


19

İle const electron = require('electron'), ipcMainmodül olarak satışa sunulacak electron.ipcMain.

Modül ile const {ipcMain} = require('electron')birlikte ipcMainsatışa sunulacak ipcMain.

Bu yapıya nesne yok etme adı verilir ve Python yapısı ile aynı işlevi görür.

from library import ...

Temel biçiminde, bir nesnenin özelliklerine doğrudan başvurmanıza izin verir:

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)

Kontrol:

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

Bir JavaScript nesnesinin birden çok özelliğini içe aktarmak için yıkım atamasını kullanabilirsiniz, örneğin:

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

Var olmayan bir özelliği kullanırsanız, bu ayarlanır undefinedve bir hata almazsınız.

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

Ayrıca bkz: İfadelerdeki küme parantezleri ne var { … } = …işe yarar ?

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.