プリロードされた AppData ディレクトリを取得するにはどうすればよいですか?
Background.js
リーリーpreload.js
リーリーconfig-manager.js
リーリーこれを?qū)g行すると、このエラーが発生します。
リーリーこれは、後で「アプリ」が初期化されるためだと思います。
私の最終的な目標(biāo)は、AppData ディレクトリから json 構(gòu)成を読み取ることです。
これを行うより良い方法があれば、お気軽にお知らせください。
ユーザーは実行時に構(gòu)成を変更できる必要はありません。ただし、defaultConfig
からのデフォルト値を構(gòu)成ファイルに書き込むことができる必要があります。
app.getPath()
このメソッドは、アプリケーションが「準(zhǔn)備完了」している場合にのみ使用できます。 app.on('ready' () => { ... });
を使用して、「ready」イベントを検出します。詳細(xì)については、Electron の Events: 'ready' イベントを參照してください。
preload.js
スクリプトに関して、関數(shù)を直接組み込むと、內(nèi)容が読みにくく理解しにくくなる場合があります (たとえ require
によってのみ実裝されていたとしても)。現(xiàn)在、この文書には懸念の分離がありません。 IE: 「構(gòu)成」機能が preload
スクリプトに組み込まれています。問題を分離したい場合は、preload.js
ファイルから「config」コードをリファクタリングし、それを獨自のファイルに配置する必要があります。このように、preload.js
ファイルは、IPC チャネルを構(gòu)成し、関連するデータ (存在する場合) を転送するためにのみ使用されます。
さて、app.getPath('appData')
問題を解決する方法を見てみましょう。
main.js ファイルで、アプリケーションが「準(zhǔn)備完了」になったことを検出し、
config-manager.js ファイル経由で
appData を取得します。內(nèi)容の。
(メインスレッド)
リーリー
ファイルで、「パス」変數(shù)を?? loadConfig()
関數(shù)スコープに移動しました。これは、これらの変數(shù)がその関數(shù)でのみ使用されるためです。ファイル內(nèi)の別の場所で使用するためにそれらを公開する必要がある場合は、それらを loadConfig()
関數(shù)スコープの外に戻す必要があります。
ElectronApp.getPath('appData')
loadConfig() 関數(shù)に移動しました。これは、アプリケーションが
main.js# から「準(zhǔn)備完了」した後であるためです。 ## この関數(shù)を呼び出します。
ヘルパー関數(shù) pathExists()
の実裝は複數(shù)回使用されるため、この関數(shù)を追加しました。
最後に、必要に応じてアプリケーションのメインスレッドのどこからでも構(gòu)成オブジェクトを簡単に取得できるように、getConfig()
関數(shù)を追加しました (使用する必要があるファイルにこの関數(shù)を含めるだけです)それ )。 IE:
。
config-manager.js
(メインスレッド)
典型的な
preload.js
IPC チャネルの実裝と、メイン スレッドまたはレンダリング スレッドでそれらを送受信する方法を理解するためのサポートが必要な場合は、新しい質(zhì)問をしてください。