1.3クイック起動終了


プリロードスクリプトを使用してレンダラにノードを表示します。アクセスjs


最後にしなければならないのは、電子版とWebページの依存性を出力するバージョンです.
この情報にアクセスしたのはノードです.jsグローバルプロセスオブジェクトによるプライマリプロセスでの実行が容易です.ただし、レンダラードキュメントコンテキストにアクセスできないため、メインプロセスでDOMを変更することはできません.それらは全く異なる過程です!
注意:電子プロセスの詳細については、Process Modelのドキュメントを参照してください.
preloadスクリプトを追加すると、レンダラーに簡単にアクセスできます.perloadスクリプトは、レンダラープロセスがロードされる前に実行され、レンダラーグローバルとノードです.すべてのjs環境にアクセスできます.
preload.jsスクリプトの作成:
window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector)
    if (element) element.innerText = text
  }

  for (const dependency of ['chrome', 'node', 'electron']) {
    replaceText(`${dependency}-version`, process.versions[dependency])
  }
})
上のコードはNodeです.jsのプロセス.replaceText関数を実行してバージョンオブジェクトにアクセスし、HTMLドキュメントのバージョンを入力します.
このスクリプトをレンダラープロセスに関連付けるには、BrowserWindow作成者のwebPreferencesを使用します.プリロードスクリプトのパスをpreloadオプションに渡します.
// include the Node.js 'path' module at the top of your file
const path = require('path')

// modify your existing createWindow() function
const createWindow = () => {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      preload: path.join(__dirname, 'preload.js')
    }
  })

  win.loadFile('index.html')
}
// ...
使用するノードは次のとおりです.jsの2つの概念:
  • dirname文字列は、現在実行されているスクリプトのパスです.(現在はプロジェクトのルートフォルダです.)
  • path.join APIは、複数のパスのセグメントを結合して、すべての印刷フォームで機能するパス文字列を作成します.
  • 現在実行されているJavaScriptファイルは相対パスを使用しているため、相対パスは「開発ボード」モードと「パッケージ」モードで使用できます.

    追加:Webコンテンツへの機能の追加


    この場合、アプリケーションにより多くの機能を追加する方法を知りたい場合があります.
    Webコンテンツと対話するために、レンダラープロセスにスクリプトを追加します.レンダラーは通常Web環境で動作するのでindex.htmlファイルを閉じる前に
    <script src="./renderer.js"></script>
    次にレンダラーjsに含まれるコードは、同じJavaScript APIを使用するか、Webパッケージを使用してコードをパッケージ化したり、折り畳んだり、reactを使用してユーザーインタフェースを管理したりすることができます.

    要約


    すべての手順が正常に完了した場合は、次の電子アプリケーションが表示されます.

    すべてのコード:
    // main.js
    
    // Modules to control application life and create native browser window
    const { app, BrowserWindow } = require('electron')
    const path = require('path')
    
    const createWindow = () => {
      // Create the browser window.
      const mainWindow = new BrowserWindow({
        width: 800,
        height: 600,
        webPreferences: {
          preload: path.join(__dirname, 'preload.js')
        }
      })
    
      // and load the index.html of the app.
      mainWindow.loadFile('index.html')
    
      // Open the DevTools.
      // mainWindow.webContents.openDevTools()
    }
    
    // This method will be called when Electron has finished
    // initialization and is ready to create browser windows.
    // Some APIs can only be used after this event occurs.
    app.whenReady().then(() => {
      createWindow()
    
      app.on('activate', () => {
        // On macOS it's common to re-create a window in the app when the
        // dock icon is clicked and there are no other windows open.
        if (BrowserWindow.getAllWindows().length === 0) createWindow()
      })
    })
    
    // Quit when all windows are closed, except on macOS. There, it's common
    // for applications and their menu bar to stay active until the user quits
    // explicitly with Cmd + Q.
    app.on('window-all-closed', () => {
      if (process.platform !== 'darwin') app.quit()
    })
    
    // In this file you can include the rest of your app's specific main process
    // code. You can also put them in separate files and require them here.
    // preload.js
    
    // All of the Node.js APIs are available in the preload process.
    // It has the same sandbox as a Chrome extension.
    window.addEventListener('DOMContentLoaded', () => {
      const replaceText = (selector, text) => {
        const element = document.getElementById(selector)
        if (element) element.innerText = text
      }
    
      for (const dependency of ['chrome', 'node', 'electron']) {
        replaceText(`${dependency}-version`, process.versions[dependency])
      }
    })
    <!--index.html-->
    
    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="UTF-8">
        <!-- https://developer.mozilla.org/en-US/docs/Web/HTTP/CSP -->
        <meta http-equiv="Content-Security-Policy" content="default-src 'self'; script-src 'self'">
        <meta http-equiv="X-Content-Security-Policy" content="default-src 'self'; script-src 'self'">
        <title>Hello World!</title>
      </head>
      <body>
        <h1>Hello World!</h1>
        We are using Node.js <span id="node-version"></span>,
        Chromium <span id="chrome-version"></span>,
        and Electron <span id="electron-version"></span>.
    
        <!-- You can also require other files to run in this process -->
        <script src="./renderer.js"></script>
      </body>
    </html>
    経験をまとめます.
  • Node.jsアプリケーションは、ガイドバーとElectronを依存関係として追加しました.
  • アプリケーション、ノードを制御します.js環境で実行されるメインプロセスのmainを実行します.jsスクリプトが作成されました.ElectronのappとBrowserWindowモジュールを使用して、Webコンテンツを個別のプロセッサ(レンダラー)に表示するブラウザウィンドウを作成しました.
  • レンダラーの特定のノード.js機能にアクセスするには、プリロードスクリプトをBrowserWindowジェネレータに接続します.
  • パッケージと導入


    Electron Forgeの迅速な導入方法の使用
    開発依存項目に
  • 電子フォームを追加し、importコマンドを使用してフォームの足場を設定します.
  • npm install --save-dev @electron-forge/cli
    npx electron-forge import
    
    ✔ Checking your system
    ✔ Initializing Git Repository
    ✔ Writing modified package.json file
    ✔ Installing dependencies
    ✔ Writing modified package.json file
    ✔ Fixing .gitignore
    
    We have ATTEMPTED to convert your app to be in a format that electron-forge understands.
    
    Thanks for using "electron-forge"!!!
  • Forgeのmakeコマンドを使用して配置
  • を有効にします.
    npm run make
    
    > [email protected] make /my-electron-app
    > electron-forge make
    
    ✔ Checking your system
    ✔ Resolving Forge Config
    We need to package your application before we can make it
    ✔ Preparing to Package Application for arch: x64
    ✔ Preparing native dependencies
    ✔ Packaging Application
    Making for the following targets: zip
    ✔ Making for target: zip - On platform: darwin - For arch: x64
    Electron Forgeは、パッケージが存在するoutフォルダを作成します.
    // Example for macOS
    out/
    ├── out/make/zip/darwin/x64/my-electron-app-darwin-x64-1.0.0.zip
    ├── ...
    └── out/my-electron-app-darwin-x64/my-electron-app.app/Contents/MacOS/my-electron-app