Tanda kurung kurawal (tanda kurung) di pernyataan 'require' Node.js

95

Saya mencoba untuk memahami perbedaan antara dua pernyataan 'membutuhkan' di bawah ini.

Secara khusus, apa tujuan { }s dililitkan ipcMain?

const electron = require('electron')

const {ipcMain} = require('electron')

Keduanya tampaknya menetapkan konten electronmodul, tetapi fungsinya jelas berbeda.

Adakah yang bisa menjelaskan?

AproposArmadillo
sumber

Jawaban:

135

Contoh kedua menggunakan destructuring.

Ini akan memanggil variabel spesifik (termasuk fungsi) yang diekspor dari modul yang diperlukan.

Misalnya (functions.js):

module.exports = {
   func1,
   func2
}

disertakan dalam file Anda:

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

Sekarang Anda dapat memanggil mereka satu per satu,

func1()
func2()

sebagai lawan:

const Functions = require('./functions')

disebut menggunakan notasi titik:

Functions.func1()
Functions.func2()

Semoga ini membantu.

Anda dapat membaca tentang merusak di sini , ini adalah bagian yang sangat berguna dari ES6 dan dapat digunakan dengan array serta objek.

alexi2
sumber
19

Dengan const electron = require('electron'), ipcMainmodul akan tersedia sebagai electron.ipcMain.

Dengan const {ipcMain} = require('electron')para ipcMainmodul akan tersedia sebagai ipcMain.

Konstruksi ini disebut penghancuran objek dan hasilnya sama seperti konstruksi Python

from library import ...

Dalam bentuk dasarnya, ini memungkinkan Anda untuk merujuk ke properti suatu objek secara langsung:

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)

Memeriksa:

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

Anda dapat menggunakan tugas penghancuran untuk mengimpor beberapa properti dari objek JavaScript, misalnya:

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

Jika Anda menggunakan properti yang tidak ada, ini akan disetel ke undefineddan Anda tidak akan mendapatkan kesalahan.

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

Lihat juga: Apa fungsi tanda kurung kurawal dalam var { … } = …pernyataan?

pengguna2314737
sumber