ElectronでBrowserWindow側にメインプロセスの変数を引き渡す
4640 ワード
TL;DR
ElectronでBrowserWindow側にメインプロセスの変数を引き渡す際のやり方のメモ。
実装
以下、サンプルです。
Electronはindex.js
で開始し、その中でどこからか取得した文字列をpreload.js
経由でBrowserWindowに引き渡します。この例では定数で宣言しちゃっていますが。
index.js
const electron = require('electron')
const app = electron.app
let mainWindow
// Electron起動時にグローバル変数を宣言しておく
global.hoge= "Hello World!"
app.on('ready', function () {
let opt
opt.webPreferences = {
nodeIntegration: false,
preload: `${__dirname}/preload.js`
}
mainWindow = new BrowserWindow(opt)
mainWindow.loadURL(`file://${__dirname}/index.html`)
mainWindow.on('closed', function () {
mainWindow = null
})
})
BrowserWindow
が呼び出される前に実行されるpreload.js
では、remote.getGlobal()
を使ってグローバル変数を取得。
preload.js
const { remote } = require('electron')
// リモートプロセス(Electronのメインプロセス)からグローバル変数を取得する。
global.hoge= remote.getGlobal('hoge')
ブラウザアプリ側では、app.js
を読み込んで処理を行っているという想定だと、以下のように読み込んだ変数を利用できます。
app.js
// preloadの段階ではまだNode.jsで動いているためグローバルはglobalだが、
// BrowserWindow側ではChroniumで動くのでグローバルはwindowとなる。
console.log(window.hoge)
他に別解はあると思いますが、まあこんなやり方もありますよ、ということで。
Author And Source
この問題について(ElectronでBrowserWindow側にメインプロセスの変数を引き渡す), 我々は、より多くの情報をここで見つけました https://qiita.com/KKZ@github/items/e367f675235267c8580d著者帰属:元の著者の情報は、元のURLに含まれています。著作権は原作者に属する。
Content is automatically searched and collected through network algorithms . If there is a violation . Please contact us . We will adjust (correct author information ,or delete content ) as soon as possible .