Electron で preload.js を正しく利用する: 包括的なガイド
<p>次のように <code>renderer</code> プロセスでノード モジュール (この場合は <code>fs</code>) を使用してみました。 </p>
<pre class="brush:php;toolbar:false;">// main_window.js
const fs = require('fs')
関数アクション() {
コンソール.ログ(fs)
}</pre>
<p><sup>注: <code>main_window</code> のボタンを押すと、<code>action</code> 関数が呼び出されます。 </sup></p>
<p>しかし、これではエラーが発生します: </p>
<pre class="brush:php;toolbar:false;">Uncaught ReferenceError: require が定義されていません
main_window.js:1</pre> で
<p>この受け入れられた回答が示すように、<code>main_window</code> を初期化するときにこれらの行を <code>main.js</code> に追加することで、この問題を解決できました。 /p>
<pre class="brush:php;toolbar:false;">// main.js
main_window = 新しいブラウザウィンドウ({
幅: 650、
高さ: 550、
ウェブ設定: {
ノード統合: true
}
})</pre>
ただし、ドキュメントによると、これはベスト プラクティスではなく、<code>preload.js</code> ファイルを作成し、その中にこれらの Node モジュールをロードしてから、すべての <code>renderer</ にロードする必要があります。コード>プロセス内で使用します。このように:<p><br /></p>
<p><code>main.js</code>:</p>
<pre class="brush:php;toolbar:false;">main_window = new BrowserWindow({
幅: 650、
高さ: 550、
ウェブ設定: {
プリロード: path.join(app.getAppPath(), 'preload.js')
}
})</pre>
<p><code>preload.js</code>:</p>
<pre class="brush:php;toolbar:false;">const fs = require('fs')
window.test = function() {
コンソール.ログ(fs)
}</pre>
<p><code>main_window.js</code>:</p>
<pre class="brush:php;toolbar:false;">function action() {
window.test()
}</pre>
<p>そしてそれはうまくいきました! </p>
<p>ここで私の質問は、<code>renderer</code> プロセスのコードのほとんどを <code>preload.js</code> に記述する必要があるというのは直観に反していませんか? <code>preload.js</code> 内の Node モジュールにのみアクセスできます)、各 <code>renderer.js</code> ファイル内の関数を呼び出すだけです (ここでは、<code>main_window. js</code>)?ここで何が理解できないのでしょうか? </p>