Фігурні дужки (фігурні дужки) в операторі Node.js 'require'


95

Я намагаюся зрозуміти різницю між двома наведеними нижче вимогами "вимагати".

Зокрема, яка мета { }обгортання s ipcMain?

const electron = require('electron')

const {ipcMain} = require('electron')

Вони обидва призначають вміст electronмодуля, але, очевидно, вони функціонують по-різному.

Хтось може пролити світло?

Відповіді:


135

Другий приклад використовує деструктуризацію.

Це викличе конкретну змінну (включаючи функції), яка експортується з необхідного модуля.

Наприклад (functions.js):

module.exports = {
   func1,
   func2
}

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

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

Тепер ви можете зателефонувати їм окремо,

func1()
func2()

на відміну від:

const Functions = require('./functions')

називаються за допомогою крапкових позначень:

Functions.func1()
Functions.func2()

Сподіваюся, це допомагає.

Ви можете прочитати про деструктуризацію тут , це дуже корисна частина ES6 і може використовуватися як з масивами, так і з об’єктами.


19

З 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 { … } = …висловлюваннях?

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.