ElectronでReactの画面を開くにはどうすればよいですか?

ブルーナ・マグリーニ

Electronを使用してデスクトップアプリケーションを実行し、Reactをテンプレートエンジンとして使用しているプロジェクトがあります。しかし、Electronと反応するために新しい画面を開く方法がわかりません。

これは私のプロジェクトのディレクトリ階層です:https//i.stack.imgur.com/RvI77.png

私のメイン-> index.jsには、アプリケーションの初期化である次のコードがあります。

'use strict'

import { app, BrowserWindow, ipcMain } from 'electron'
import * as path from 'path'
import { format as formatUrl } from 'url'
import { NOME_APLICACAO, ABRIR_TELA_DE_VENDAS } from '../utils/constants.js';


const isDevelopment = process.env.NODE_ENV !== 'production'

// global reference to login window (necessary to prevent the window from being garbage collected)
let loginWindow;
let vendaWindow;

function createLoginWindow() {
  const window = new BrowserWindow({ 
    title: NOME_APLICACAO,
    webPreferences: { nodeIntegration: true }
  });

  if (isDevelopment) {
    window.webContents.openDevTools()
  };

  if (isDevelopment) {
    window.loadURL(`http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}`)
  }
  else {
    window.loadURL(formatUrl({
      pathname: path.join(__dirname, 'index.html'),
      protocol: 'file',
      slashes: true
    }))
  }

  window.on('closed', () => {
    loginWindow = null
  })

  window.webContents.on('devtools-opened', () => {
    window.focus()
    setImmediate(() => {
      window.focus()
    })
  })

  return window;
}


// quit application when all windows are closed
app.on('window-all-closed', () => {
  // on macOS it is common for applications to stay open until the user explicitly quits
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

app.on('activate', () => {
  // on macOS it is common to re-create a window even after all windows have been closed
  if (loginWindow === null) {
    loginWindow = createLoginWindow()
  }
})

// create main BrowserWindow when electron is ready
app.on('ready', () => {
  loginWindow = createLoginWindow()
})

そして、どういうわけか、プロジェクトを開始すると、view-> index.js画面が開き、index.js画面には次のコードがあります。

import React from "react"
import ReactDOM from "react-dom"
import Login from "./component/loginView/Login"

ReactDOM.render(
    <Login />, 
    document.getElementById("app") 
)

私の研究で学んだことから、ビュー-> 'index.js'は、IDが「app」の要素に.htmlファイルを追加する必要がありました。しかし、私のディレクトリ階層でわかるように、.htmlファイルはどこにもありません。そのため、電子がindex.jsファイルのどこに追加されているのかわかりません。これが私の最初の質問です。

私の2番目の質問は、ご覧のwindow.loadURL(`http://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}`)とおり、main-> index.jsのこの命令は、ビュー-> index.jsを開くのに十分であり、私にはノウハウがありません。メイン-> index.jsで開きたいview-> vendaView.jsのような他のページがあるので、その方法を知りたいのですが、コーディング方法がわかりません。

どんな援助にも感謝します。

Nilanka Manoj

現在、開発中の環境で実行しているため、実行中に電子が開きhttp://localhost:${process.env.ELECTRON_WEBPACK_WDS_PORT}ます。あなたが書いたsrcファイルを開いていません。実際には、ブラウザで読み取ることはできません(電子も含まれます)。開発環境では、実行時npm startまたはその他の開始コマンドを実行すると、ソースファイルがブラウザで読み取り可能なバージョンに構築され、ポートで静的にprocess.env.ELECTRON_WEBPACK_WDS_PORT提供されます。電子はそのコンテンツを画面に表示します。

ブラウザで同じURLを開くことで確認できます。

開発環境にいない場合、ブラウザはビルドされたファイルのindex.htmlを開く必要があります。ビルドされたファイルはブラウザで読み取ることができます。だから、私はその構成を疑っています:

 pathname: path.join(__dirname, 'index.html')

動作しません。したがって、次のように、ビルドされたファイルのインデックスを開くようにelectronに指示する必要があります。

pathname: path.join(__dirname, '../build/index.html')

例:<Login/>srcファイルのタグはブラウザに表示できませんが、srcがビルドされると、表示できるコンテンツを含むタグのセットに置き換えられます。

Electronの機能の多くは、Chromium、Node.js、およびV8のコアコンポーネントによって提供されます。参照:https//www.electronjs.org/blog/electron-6-0

index.jsは、Electronのブラウザーによって開かれる環境(devまたはprod)に基づいて、静的サーブとビルドされたインデックスを変更します。

この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。

侵害の場合は、連絡してください[email protected]

編集
0

コメントを追加

0

関連記事

分類Dev

何かを変更してからreact-adminで別の画面を開くアクションを作成するにはどうすればよいですか?

分類Dev

大画面でデフォルトでMaterialUI Mini Variant Drawerを開くにはどうすればよいですか?

分類Dev

ロックされた画面でCMDを開くにはどうすればよいですか?

分類Dev

DialogFragmentの上でProgressDialogを開くにはどうすればよいですか?

分類Dev

セレンクロームを全画面で開くにはどうすればよいですか?

分類Dev

画面c ++でファイルを開くにはどうすればよいですか?

分類Dev

画面中央にターミナルウィンドウを開くにはどうすればよいですか?

分類Dev

画面の右側から右から左に開くようにAngular6 Materialsidenavを設定するにはどうすればよいですか?

分類Dev

画面上の特定の位置で開くようにアプリケーションを設定するにはどうすればよいですか?

分類Dev

複数の端末を開くにはどうすればよいですか?

分類Dev

複数の端末を開くにはどうすればよいですか?

分類Dev

Electronに新しいウィンドウを個別のプロセスで開くにはどうすればよいですか?

分類Dev

プログラムで開く(画面に表示する)にはどうすればよいですか?NavigationView

分類Dev

JavaScriptで定期的にURLを開くにはどうすればよいですか?

分類Dev

タブのセットをすばやく一緒に開くにはどうすればよいですか?

分類Dev

Unityで、アプリケーションウィンドウを画面の中央で開くにはどうすればよいですか?

分類Dev

Ubuntuでポートを開くにはどうすればよいですか?

分類Dev

Nautilusを「ArchiveMounterで開く」にはどうすればよいですか?

分類Dev

githubで問題を再度開くにはどうすればよいですか?

分類Dev

numpyでjpgを開くにはどうすればよいですか?

分類Dev

pvpythonでparaviewGUIを開くにはどうすればよいですか?

分類Dev

PythonでGoogleChromeを開くにはどうすればよいですか

分類Dev

ボタンでContextMenuを開くにはどうすればよいですか

分類Dev

Windows BashでKDEを開くにはどうすればよいですか?

分類Dev

Ubuntuでポートを開くにはどうすればよいですか?

分類Dev

WindowsでDocker設定を開くにはどうすればよいですか?

分類Dev

Nautilusを「ArchiveMounterで開く」にはどうすればよいですか?

分類Dev

複数のソケット接続をすばやく開くにはどうすればよいですか?

分類Dev

動的リンクを開くときに特定の画面にリダイレクトするにはどうすればよいですか?

Related 関連記事

  1. 1

    何かを変更してからreact-adminで別の画面を開くアクションを作成するにはどうすればよいですか?

  2. 2

    大画面でデフォルトでMaterialUI Mini Variant Drawerを開くにはどうすればよいですか?

  3. 3

    ロックされた画面でCMDを開くにはどうすればよいですか?

  4. 4

    DialogFragmentの上でProgressDialogを開くにはどうすればよいですか?

  5. 5

    セレンクロームを全画面で開くにはどうすればよいですか?

  6. 6

    画面c ++でファイルを開くにはどうすればよいですか?

  7. 7

    画面中央にターミナルウィンドウを開くにはどうすればよいですか?

  8. 8

    画面の右側から右から左に開くようにAngular6 Materialsidenavを設定するにはどうすればよいですか?

  9. 9

    画面上の特定の位置で開くようにアプリケーションを設定するにはどうすればよいですか?

  10. 10

    複数の端末を開くにはどうすればよいですか?

  11. 11

    複数の端末を開くにはどうすればよいですか?

  12. 12

    Electronに新しいウィンドウを個別のプロセスで開くにはどうすればよいですか?

  13. 13

    プログラムで開く(画面に表示する)にはどうすればよいですか?NavigationView

  14. 14

    JavaScriptで定期的にURLを開くにはどうすればよいですか?

  15. 15

    タブのセットをすばやく一緒に開くにはどうすればよいですか?

  16. 16

    Unityで、アプリケーションウィンドウを画面の中央で開くにはどうすればよいですか?

  17. 17

    Ubuntuでポートを開くにはどうすればよいですか?

  18. 18

    Nautilusを「ArchiveMounterで開く」にはどうすればよいですか?

  19. 19

    githubで問題を再度開くにはどうすればよいですか?

  20. 20

    numpyでjpgを開くにはどうすればよいですか?

  21. 21

    pvpythonでparaviewGUIを開くにはどうすればよいですか?

  22. 22

    PythonでGoogleChromeを開くにはどうすればよいですか

  23. 23

    ボタンでContextMenuを開くにはどうすればよいですか

  24. 24

    Windows BashでKDEを開くにはどうすればよいですか?

  25. 25

    Ubuntuでポートを開くにはどうすればよいですか?

  26. 26

    WindowsでDocker設定を開くにはどうすればよいですか?

  27. 27

    Nautilusを「ArchiveMounterで開く」にはどうすればよいですか?

  28. 28

    複数のソケット接続をすばやく開くにはどうすればよいですか?

  29. 29

    動的リンクを開くときに特定の画面にリダイレクトするにはどうすればよいですか?

ホットタグ

アーカイブ