Búsqueda de sitios web

javascript - Llaves (corchetes) en la declaración 'require' de Node.js


Estoy tratando de entender la diferencia entre las dos sentencias 'require' a continuación.

Específicamente, ¿cuál es el propósito de las { } que rodean a ipcMain?

const electron = require('electron')

const {ipcMain} = require('electron')

Ambos parecen asignar el contenido del módulo electron, pero obviamente funcionan de manera diferente.

¿Alguien puede aclarar algo?

Respuesta #1

El segundo ejemplo utiliza destructuración.

Esto llamará a la variable específica (incluyendo funciones) que se exporta desde el módulo requerido.

Por ejemplo (functions.js):

module.exports = {
   func1,
   func2
}

está incluido en tu archivo:

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

Ahora puedes llamarlos individualmente,

func1()
func2()

a diferencia de:

const Functions = require('./functions')

se llaman usando la notación de puntos:

Functions.func1()
Functions.func2()

Puedes leer sobre la desestructuración aquí, es una parte muy útil de ES6 y se puede usar con arreglos así como con objetos.

Respuesta #2

Con const electron=require('electron'), el módulo ipcMain estará disponible como electron.ipcMain.

Con const {ipcMain}=require('electron') el módulo ipcMain estará disponible como ipcMain.

Esta construcción se llama desestructuración de objetos y logra lo mismo que la construcción de Python

from library import ...

En su forma básica, te permite referirte directamente a las propiedades de un objeto:

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)

Comprobar :

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

Puedes usar la asignación por desestructuración para importar múltiples propiedades de un objeto de JavaScript, por ejemplo:

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

Si utilizas una propiedad que no existe, esto se establecerá en undefined y no obtendrás un error.

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

Véase también: ¿Qué hacen las llaves en las declaraciones var { … }=…?

Artículos relacionados