以下の2つのrequireステートメントの違いを理解しようとしています。
具体的には、ipcMain
の周りにラップされた{ }
sの目的は何ですか?
const electron = require('electron')
const {ipcMain} = require('electron')
それらは両方とも電子モジュールの内容を割り当てるように見えますが、明らかに異なって機能します。
誰でも光を当てることができますか?
2番目の例では、構造化を使用しています。
これにより、必要なモジュールからエクスポートされた特定の変数(関数を含む)が呼び出されます。
例(functions.js):
module.exports = {
func1,
func2
}
ファイルに含まれています:
const { func1, func2 } = require('./functions')
これで、個別に呼び出すことができます。
func1()
func2()
とは対照的に:
const Functions = require('./functions')
ドット表記を使用して呼び出されます:
Functions.func1()
Functions.func2()
お役に立てれば。
here の破壊について読むことができます。これはES6の非常に有用な部分であり、オブジェクトだけでなく配列でも使用できます。
const electron = require('electron')
を使用すると、ipcMain
モジュールは_electron.ipcMain
_として利用可能になります。
const {ipcMain} = require('electron')
を使用すると、ipcMain
モジュールがipcMain
として使用可能になります。
このコンストラクトは object destructuring と呼ばれ、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
_