web前端项目使用electron打包成跨平台桌面端程序(Windows)

3 篇文章 0 订阅
1 篇文章 0 订阅

Electron是什么?

Electron是一个使用 JavaScript、HTML 和 CSS 构建桌面应用程序的框架。 嵌入 Chromium 和 Node.js 到 二进制的 Electron 允许您保持一个 JavaScript 代码代码库并创建 在Windows上运行的跨平台应用 macOS和Linux——不需要本地开发 经验。

快速入门

基本使用要求

在使用Electron进行开发之前,您需要安装 Node.js。 我们建议您使用最新的LTS版本。
查看本地安装node版本以及npm版本:

node -v
npm -v

在这里插入图片描述
本次打包的前端项目使用vue开发,查看vue版本

vue -V

在这里插入图片描述

从github下载一个开源项目

使用vue开发的PC端web前端项目
(Angular、React、Vue或者纯HTML+CSS+JavaScript都可以)
使用VSCode打开项目,执行npm install下载项目依赖包
在这里插入图片描述

npm install

在这里插入图片描述

执行启动脚本运行项目

查看项目package.json包查看脚本
在这里插入图片描述
执行npm run dev启动项目

npm run dev

启动报错:
在这里插入图片描述

  • 原因:node V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,node V17(包含)以后的版本会出现这个错误
  • 解决:将SET NODE_OPTIONS=–openssl-legacy-provider 加入到package.json里vue的脚本中,如果只需要启动项目只需要在启动脚本前加即可
    在这里插入图片描述
    再次执行npm run dev
npm run dev

在这里插入图片描述
在这里插入图片描述

安装electron依赖包

安装前:

{
  "name": "manage-desk",
  "version": "0.1.0",
  "private": true,
  "scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
    "lint": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service lint"
  },
  "dependencies": {
    "@jiaminghi/data-view": "^2.3.8",
    "core-js": "^2.6.5",
    "vue": "^2.6.10"
  },
  "devDependencies": {
    "@vue/cli-plugin-babel": "^3.11.0",
    "@vue/cli-plugin-eslint": "^3.11.0",
    "@vue/cli-service": "^3.11.0",
    "@vue/eslint-config-standard": "^4.0.0",
    "babel-eslint": "^10.0.1",
    "eslint": "^5.16.0",
    "eslint-plugin-vue": "^5.0.0",
    "less": "^3.0.4",
    "less-loader": "^5.0.0",
    "vue-template-compiler": "^2.6.10"
  },
  "eslintConfig": {
    "root": true,
    "env": {
      "node": true
    },
    "extends": [
      "plugin:vue/essential",
      "@vue/standard"
    ],
    "rules": {},
    "parserOptions": {
      "parser": "babel-eslint"
    }
  },
  "postcss": {
    "plugins": {
      "autoprefixer": {}
    }
  },
  "browserslist": [
    "> 1%",
    "last 2 versions"
  ]
}

npm install --save-dev electron//只需要在开发环境安装即可

在这里插入图片描述

编写electron入口文件,在package.json中配置入口文件路径和electron执行脚本

  • 新建一个electron文件夹,创建main.js文件为入口文件,文件名都可以随意写,在package.json中指定好main字段即可
const { app, BrowserWindow } = require('electron');

// 该方法创建一个窗口
const createWindow = () => {
    // 初始化浏览器窗口设置参数
    const win = new BrowserWindow({
      width: 1500,
      height: 800,
      minWidth:1200,
      minHeight:600
    })
    // 加载页面
    win.loadURL('http://localhost:8080');
  }


//在 Electron 中,只有在 app 模块的 ready 事件被激发后才能创建浏览器窗口。您可以通过使用 app.whenReady() API来监听此事件。在whenReady()成功后调用createWindow()。
  app.whenReady().then(() => {
    createWindow()
    // 当 Linux 和 Windows 应用在没有窗口打开时退出了,macOS 应用通常即使在没有打开任何窗口的情况下也继续运行,并且在没有窗口可用的情况下激活应用时会打开新的窗口。
    // 为了实现这一特性,监听 app 模块的 activate 事件。如果没有任何浏览器窗口是打开的,则调用 createWindow() 方法。
    // 因为窗口无法在 ready 事件前创建,你应当在你的应用初始化后仅监听 activate 事件。 通过在您现有的 whenReady() 回调中附上您的事件监听器来完成这个操作。
    app.on('activate', () => {
      if (BrowserWindow.getAllWindows().length === 0) createWindow()
    })
  })
// 窗口全部关闭时执行退出APP
  app.on('window-all-closed', () => {
    // 虽然你现在可以打开一个浏览器窗口,但你还需要一些额外的模板代码使其看起来更像是各平台原生的。 应用程序窗口在每个OS下有不同的行为,Electron将在app中实现这些约定的责任交给开发者们。
    // 一般而言,你可以使用 进程 全局的 platform 属性来专门为某些操作系统运行代码。
    // 在Windows和Linux上,关闭所有窗口通常会完全退出一个应用程序。
    // 为了实现这一点,你需要监听 app 模块的 'window-all-closed' 事件。如果用户不是在 macOS(darwin) 上运行程序,则调用 app.quit()。
    if (process.platform !== 'darwin') app.quit()
    
    console.log("window-all-closed:窗口全部关闭,程序退出!");
  })

在这里插入图片描述

启动electron脚本,运行electron应用

npm run start

electron打开一个独立的窗口,本质上就是一个浏览器窗口,electron通过渲染进程渲染网页,通过主进程运行main.js,将与本地交互的代码如获取蓝牙设备信息等都交给主进程执行
在这里插入图片描述
前面在监听全部窗口关闭时间里打印了一句话:

在这里插入图片描述
中文乱码解决:修改electron启动脚本

"start": "chcp 65001 && electron ."

在这里插入图片描述

应用打包Windows平台

安装electron-builder

npm install electron-builder  --save-dev

在这里插入图片描述

electron打包配置

在package.json中添加build顶层键配置构建配置

 //electron打包构建配置
 "build": {
    "copyright":"Copyright © 2023",
    "directories"
          "output":"./output-electron"//打包输出目录
    },
    "win":{//打包win程序包的配置
          "target": [
            {
                "target": "nsis",
                "arch": [
                   "x64" //打包64位包
                ]
            }
          ]
    },
    "nsis":{//打包成安装包的配置
        "oneClick":false,//设置不允许一键安装
        "allowToChangeInstallationDirectory":true //允许安装时选择安装目录
    }
  }

在这里插入图片描述
在package.json里添加electron-builder的打包脚本

"pack": "electron-builder --dir",
"build-electron": "electron-builder  "

在这里插入图片描述

vue项目编译

在vue.config.js中编写编译配置,vue脚本编译时会自动读取该文件

module.exports = {
  publicPath: process.env.NODE_ENV === 'production'? './': '/',//编译出来的文件使用相对路径可直接浏览器打开渲染,否则需要放在一个http服务器中解析
  outputDir:"dist",//打包输出目录
  assetsDir:"static",//静态资源存放目录

}

执行vue编译脚本

npm run build

在这里插入图片描述

在这里插入图片描述

修改electron入口文件中窗口渲染网页的路径

因为打包成桌面可执行程序后不再从网络地址中渲染页面,而是渲染本地html+css+JavaScript资源

 win.loadFile(path.join(__dirname,"../",publicPath,outputDir,"index.html"));//Y因为main.js在electron文件夹中,所以需要../退出一级到根目录下再拼接路径

设置取消默认的菜单目录

const { app, BrowserWindow,Menu } = require('electron');
//取消窗口顶部菜单目录
Menu.setApplicationMenu(null);

在这里插入图片描述

electron打包

执行electron打包脚本

npm run build-electron

在这里插入图片描述

安装应用

在这里插入图片描述
选择安装目录
在这里插入图片描述

执行程序

在这里插入图片描述

  • 1
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
### 回答1: Electron 是一种基于 Node.js 和 Chromium 的框架,可用于创建可扩展的桌面应用程序。以下是使用 Electron 创建可扩展应用程序的基本步骤: 1. 安装 Node.jsElectron:首先,您需要安装 Node.jsElectron。您可以从官方网站下载并安装 Node.js,然后使用 npm 安装 Electron。 2. 创建项目目录:创建一个新的项目目录并在其中初始化 npm。打开命令行界面并输入以下命令: ``` mkdir my-electron-app cd my-electron-app npm init ``` 然后按照提示进行配置,创建 package.json 文件。 3. 安装 Electron使用 npm 安装 Electron。 ``` npm install electron --save-dev ``` 这将在项目中安装 Electron,并将其添加到 package.json 文件中的 devDependencies。 4. 创建主进程文件:创建一个名为 main.js 的文件,这将是您的应用程序的主进程文件。主进程是使用 Electron API 和 Node.js 模块来控制应用程序的进程。在 main.js 文件中,您可以编写用于初始化应用程序的代码。 5. 创建渲染进程文件:创建一个名为 index.html 的文件,这将是您的应用程序的渲染进程文件。渲染进程是在应用程序窗口中运行的 JavaScript 代码。在 index.html 文件中,您可以编写应用程序的用户界面和其他代码。 6. 编写应用程序代码:使用 Electron API 和 Node.js 模块来编写应用程序的代码。您可以在主进程中添加事件监听器和其他逻辑,例如在应用程序启动时创建窗口。在渲染进程中,您可以使用 HTML、CSS 和 JavaScript 编写应用程序的用户界面。 7. 打包应用程序:一旦您完了应用程序的开发,可以使用 Electron-packager 或 Electron-builder 等工具将其打包为可执行文件。 这些是使用 Electron 创建可扩展应用程序的基本步骤。请注意,Electron 可以与其他框架和库一起使用,例如 React 和 Angular,以创建更复杂的应用程序。 ### 回答2: Electron是一个开源的框架,用于创建可扩展的跨平台应用程序。它基于Chromium和Node.js,并允许使用前端技术如HTML、CSS和JavaScript来开发应用程序。下面是如何使用Electron创建可扩展应用程序的步骤: 1. 安装Electron:首先,您需要在您的开发环境中安装Electron。您可以使用命令行工具(如npm)来进行安装。 2. 创建新应用程序:创建一个新的应用程序目录,并在其中初始化您的Electron应用程序。您可以使用Electron提供的命令行工具来简化这个过程。 3. 配置主进程:Electron应用程序有两个主要进程:主进程和渲染进程。主进程负责处理系统级的任务,而渲染进程负责显示用户界面。您可以使用Node.js编写主进程代码,并在主进程中创建BrowserWindow实例来加载和显示渲染进程。 4. 编写HTML和CSS代码:您可以使用HTML和CSS来设计和布局应用程序的用户界面。您可以使用DOM API和Web API来处理用户交互和响应。 5. 添加JavaScript逻辑:使用JavaScript编写应用程序的逻辑。您可以访问Node.js的API来处理文件操作、网络请求等任务。您还可以使用Electron的API来访问系统级功能如显示通知、打开文件选择对话框等。 6. 打包和发布:当您完应用程序的开发后,您可以使用Electron提供的打包工具来将应用程序打包为各个操作系统的可执行文件。您可以选择将应用程序发布到各个应用商店或通过其他方式进行分发。 使用Electron可以轻松地创建可扩展的跨平台应用程序。它使开发人员可以在一个代码库中同时使用前端和后技术,从而加速开发过程并提高开发效率。同时,Electron还使得应用程序可以跨平台运行,从而扩大了应用程序的受众范围。 ### 回答3: 使用Electron创建可扩展应用程序,需要以下几个步骤: 1. 安装Electron:首先需要在计算机上安装Electron的开发环境。可以通过npm包管理器安装Electron的命令行工具。 2. 初始化项目:通过命令行工具,在项目文件夹中初始化一个Electron项目。这将生一个包含基本应用程序结构的目录。 3. 编写主进程代码:在主进程文件中编写应用程序的主要逻辑。主进程可以访问底层操作系统的API并控制应用程序的整体流程。 4. 编写渲染进程代码:在渲染进程文件中编写应用程序的界面和交互逻辑。渲染进程使用HTML、CSS和JavaScript创建用户界面,并通过与主进程进行通信来实现应用程序的功能。 5. 扩展应用程序功能:通过使用Electron的API和第三方库,可以为应用程序添加各种功能。例如,可以使用Electron的窗口管理API来创建新窗口或添加自定义菜单。还可以使用第三方库来实现文件系统访问、网络请求、数据库连接等功能。 6. 打包应用程序:完开发后,可以使用Electron打包工具将应用程序打包可执行文件。这样用户就可以在其操作系统上安装和运行应用程序。 总的来说,使用Electron创建可扩展应用程序需要结合主进程和渲染进程的编程,利用Electron的API和第三方库来实现所需功能,并最终通过打包工具将应用程序打包可执行文件。这样就能创建出一个支持跨平台、易于扩展的应用程序

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值