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 { … }=…?
