Node.jsの 'require'ステートメントの中括弧(中括弧)


94

以下の2つの「require」ステートメントの違いを理解しようとしています。

具体的には、{ }ラップアラウンドの目的は何ipcMainですか?

const electron = require('electron')

const {ipcMain} = require('electron')

どちらもelectronモジュールの内容を割り当てているように見えますが、明らかに機能が異なります。

誰かが光を当てることができますか?

回答:


134

2番目の例では、破壊を使用しています。

これにより、必要なモジュールからエクスポートされた特定の変数(関数を含む)が呼び出されます。

例(functions.js):

module.exports = {
   func1,
   func2
}

ファイルに含まれています:

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

今、あなたはそれらを個別に呼び出すことができます、

func1()
func2()

とは対照的に:

const Functions = require('./functions')

ドット表記を使用して呼び出されます。

Functions.func1()
Functions.func2()

お役に立てれば。

ここで破壊について読むことができます。これはES6の非常に便利な部分であり、オブジェクトだけでなく配列でも使用できます。


18

を使用するconst electron = require('electron')と、ipcMainモジュールはとして使用可能になりますelectron.ipcMain

でモジュールとして利用できるようになります。const {ipcMain} = require('electron')ipcMainipcMain

この構造はオブジェクト破壊と呼ばれ、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 { … } = …ますか?

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.