用Electron将web网页程序包装成桌面应用

2023-11-08

用Electron将web网页程序包装成桌面应用

前提

  • web 端页面,真的太容易一不小心关掉了,或者,标签页比较多的时候不太容易找到,所以决定快速包装一个

认识electron

搭建electron项目

  1. 第一步 创建项目,下载依赖

mkdir my-electron-app && cd my-electron-app
npm init
npm install --save-dev electron (devDependencies:只在开发环境中使用的依赖,最后不会被打包到项目中)

  • init初始化命令会提示您在项目初始化配置中设置一些值
    {
      "name": "my-electron-app",
      "version": "1.0.0",
      "description": "Hello World!",
      "main": "main.js",
      "author": "Jane Doe",
      "license": "MIT"
    }
    
  1. 编写文件
  • 需要我们编写两个文件
  • index.html
<!DOCTYPE html>
<html>
  <head>
    <meta charset="UTF-8">
    <meta http-equiv="Content-Security-Policy" content="default-src 'none'">
    <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>.
  </body>
</html>
  • main.js
// 在文件头部引入 Node.js 中的 path 模块
const path = require('path')
// app 它控制应用程序的事件生命周期。
// BrowserWindow 模块,它创建和管理应用程序 窗口。
const { app, BrowserWindow } = require('electron');

// 创建浏览器窗口
function createWindow () {
    //__dirname 字符串指向当前正在执行脚本的路径 (在本例中,它指向你的项目的根文件夹)
    const mainWindow = new BrowserWindow({
        width: 1000,
        height: 800,
      })
      // 本地文件
      //mainWindow.loadFile('index.html')
      // 线上页面
      mainWindow.loadURL('https://www.baidu.com/')
      // 打开控制台
      mainWindow.webContents.openDevTools()

};

// 除了 macOS 外,当所有窗口都被关闭的时候退出程序。 因此,通常对程序和它们在
// 任务栏上的图标来说,应当保持活跃状态,直到用户使用 Cmd + Q 退出。
app.on('window-all-closed', function () {
	if (process.platform !== 'darwin') app.quit()
})

// 部分 API 在 ready 事件触发后才能使用。
// 在 Electron 中,只有在 app 模块的 ready 事件被激发后才能创建浏览器窗口
app.whenReady().then(() => {
    createWindow()
    app.on('activate', function () {
      // 通常在 macOS 上,当点击 dock 中的应用程序图标时,如果没有其他打开的窗口,那么程序会重新创建一个窗口。
      if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
})
  1. 打包
  • 采用electron-builder打包
  • 配置打包信息(package.json)
  "build": {
    "appId": "com.baidu.app",//包名  
    "productName": "baidu",//项目名 这也是生成的exe文件的前缀名
    "dmg": {
      "icon": "public/icon/icons.icns"
    },
    "win": {
      "icon": "public/icon/icons.ico"
    }
  },

效果图

  • 浏览器
    在这里插入图片描述
  • 桌面应用
    在这里插入图片描述
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

用Electron将web网页程序包装成桌面应用 的相关文章