javascript Node.js“require”语句中的花括号(大括号)

mtb9vblg  于 2022-12-25  发布在  Java
关注(0)|答案(2)|浏览(212)

我试图理解下面两个“require”语句之间的区别。
具体来说,将{ } Package 在ipcMain周围的目的是什么?

const electron = require('electron')

const {ipcMain} = require('electron')

它们看起来都分配了electron模块的内容,但是它们的功能显然不同。
有谁能解释一下吗?

fdbelqdn

fdbelqdn1#

第二个例子使用了解构。
这将调用从所需模块导出的特定变量(包括函数)。
例如(functions.js):

module.exports = {
   func1,
   func2
}

包含在您的文件中:

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

现在您可以单独调用它们,

func1()
func2()

而不是:

const Functions = require('./functions')

用点表示法命名:

Functions.func1()
Functions.func2()

您可以阅读有关解构here的内容,它是ES6中非常有用的一部分,可以与数组以及对象一起使用。

s4chpxco

s4chpxco2#

对于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

另请参阅:* What does curly brackets in the var { … } = … statements do? *

相关问题