• <source id="uu0qo"><option id="uu0qo"></option></source>
  • <nav id="uu0qo"></nav>
    <object id="uu0qo"><u id="uu0qo"></u></object>
    <center id="uu0qo"><option id="uu0qo"></option></center>
    <nav id="uu0qo"></nav><nav id="uu0qo"><u id="uu0qo"></u></nav>
    <object id="uu0qo"><u id="uu0qo"></u></object>
  • <source id="uu0qo"><u id="uu0qo"></u></source>
    <source id="uu0qo"><option id="uu0qo"></option></source>
  • Electron 跨平臺桌面應用開發工具

    作者:辰風沐陽 閱讀:864 發布時間:2023-11-21 上次更新:2023-12-30

    1. 前言


    electron 官網:https://www.electronjs.org

    electron 是跨平臺桌面應用開發工具,它兼容 mac、windows、linux,可以構建出三個平臺的應用程序

    學習的好處:開發的應用程序,可以上架到應用商店獲得收益,也可以提高應聘時的競爭力,提高開發者的綜合能力

    2. 安裝


    初始化項目:運行以下命令即可,會生成一個 package.json 文件

    1. npm init -y

    安裝 electron 依賴,安裝中比較慢或遇到其他問題, 點擊查看解決方案

    1. npm install -D electron

    3. 初始化項目


    如下所示,在 package.json 文件中可以看到主進程文件默認為 index.js,我們在項目根目錄下創建這個文件

    1. {
    2. "main": "index.js"
    3. }

    并且在 index.js 文件中添加以下代碼

    1. const { BrowserWindow, app } = require('electron');
    2. // 應用啟動后創建窗口
    3. app.whenReady().then(() => {
    4. const mainWindow = new BrowserWindow({
    5. width: 300,
    6. height: 300,
    7. })
    8. })

    修改 package.json 文件,添加運行腳本,如下所示

    1. {
    2. "scripts": {
    3. "dev": "electron ."
    4. }
    5. }

    在項目根目錄,運行腳本命令就可以啟動 electron 了,會彈出一個窗口

    1. npm run dev

    4. 加載網頁或文件


    1. const { BrowserWindow, app } = require('electron');
    2. const path = require('path');
    3. // 應用啟動后創建窗口
    4. app.whenReady().then(() => {
    5. const mainWindow = new BrowserWindow({
    6. // 窗口大小
    7. width: 300,
    8. height: 300,
    9. // 窗口置頂
    10. alwaysOnTop: true,
    11. // 窗口位置
    12. x: 1500,
    13. y: 100
    14. })
    15. // 加載網頁
    16. // mainWindow.loadURL('http://www.837wan.com')
    17. // 加載文件
    18. mainWindow.loadFile(path.resolve(__dirname, 'index.html'))
    19. })

    5. 主進程和渲染進程


    在 electron 應用程序中,主進程就是從 package.json 文件中的 main 腳本開始的進程。主進程中運行的 JS 可以調用操作系統的本地功能,因為它可以訪問 nodejs 標準庫。

    主進程主要負責創建和控制瀏覽器窗口,管理應用程序的生命周期,以及運行應用程序的主要功能。主進程可以創建多個渲染進程,每一個渲染進程都是一個新的瀏覽器窗口或 web 頁面

    根目錄下的 index.js 就是主進程文件,主進程中打印的結果會輸出到終端中

    1. console.log('hello electron');

    渲染進程負責運行用戶界面的 JS。每個 electron 都在其自己的渲染進程中運行

    在默認情況下,渲染進程不能使用 nodejs 和 electron api,因為這可能產生安全問題

    6. nodemon 刷新應用


    在修改主進程文件后,每次都要重新執行 npm run dev 才會生效,如果想要修改為自動生效,可以使用 nodemon

    安裝 nodemon 為運行時依賴

    1. npm install -D nodemon

    修改 package.json 文件,在 electron 啟動命令前面添加 nodemon --exec 即可

    1. {
    2. "scripts": {
    3. "dev": "nodemon --exec electron ."
    4. }
    5. }

    此時,當修改主進程文件 index.js 時,會自動刷新,但是它默認不監聽 html 文件的改動

    在項目根目錄下創建配置文件 nodemon.json,將下面內容放入該文件就可以監聽 html 文件的修改了

    1. {
    2. "ignore": [
    3. "dist",
    4. "node_modules"
    5. ],
    6. "colours": true,
    7. "verbose": true,
    8. "restartable": "rs",
    9. "watch": [
    10. "*.*"
    11. ],
    12. "ext": "html,js"
    13. }

    7. 兼容 mac 系統的操作方式


    mac 和 windows 不同,mac 的應用程序所有窗口都關閉,應用程序也不會退出

    1. const { BrowserWindow, app } = require('electron');
    2. const path = require('path');
    3. // 創建窗口
    4. const createWindow = () => {
    5. const mainWindow = new BrowserWindow({
    6. // 窗口大小
    7. width: 300,
    8. height: 300,
    9. // 窗口置頂
    10. alwaysOnTop: true,
    11. // 窗口位置
    12. x: 1500,
    13. y: 100
    14. })
    15. // 加載文件
    16. mainWindow.loadFile(path.resolve(__dirname, 'index.html'))
    17. }
    18. // 監聽應用啟動
    19. app.whenReady().then(() => {
    20. createWindow()
    21. })
    22. // 監聽所有窗口全部關閉
    23. app.on('window-all-closed', () => {
    24. // 當系統不是 mac 時,退出應用程序
    25. console.log(process.platform);
    26. if (process.platform != 'darwin') app.quit();
    27. })
    28. // 監聽應用激活
    29. app.on('activate', () => {
    30. createWindow()
    31. })

    標簽: nodejs mac

    夜夜嗨AV一区二区三区_91精品国产91久久久久_亚洲精品无码鲁网午夜_一本大道久久东京热
  • <source id="uu0qo"><option id="uu0qo"></option></source>
  • <nav id="uu0qo"></nav>
    <object id="uu0qo"><u id="uu0qo"></u></object>
    <center id="uu0qo"><option id="uu0qo"></option></center>
    <nav id="uu0qo"></nav><nav id="uu0qo"><u id="uu0qo"></u></nav>
    <object id="uu0qo"><u id="uu0qo"></u></object>
  • <source id="uu0qo"><u id="uu0qo"></u></source>
    <source id="uu0qo"><option id="uu0qo"></option></source>