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

这篇具有很好参考价值的文章主要介绍了web前端项目使用electron打包成跨平台桌面端程序(Windows)。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Electron是什么?

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

快速入门

基本使用要求

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

node -v
npm -v

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
本次打包的前端项目使用vue开发,查看vue版本

vue -V

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

从github下载一个开源项目

使用vue开发的PC端web前端项目
(Angular、React、Vue或者纯HTML+CSS+JavaScript都可以)
使用VSCode打开项目,执行npm install下载项目依赖包
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

npm install

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

执行启动脚本运行项目

查看项目package.json包查看脚本
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
执行npm run dev启动项目

npm run dev

启动报错:
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

  • 原因:node V17版本发布了OpenSSL3.0对算法和秘钥大小增加了更为严格的限制,node V17(包含)以后的版本会出现这个错误
  • 解决:将SET NODE_OPTIONS=–openssl-legacy-provider 加入到package.json里vue的脚本中,如果只需要启动项目只需要在启动脚本前加即可
    web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
    再次执行npm run dev
npm run dev

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

安装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//只需要在开发环境安装即可

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

编写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:窗口全部关闭,程序退出!");
  })

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

启动electron脚本,运行electron应用

npm run start

electron打开一个独立的窗口,本质上就是一个浏览器窗口,electron通过渲染进程渲染网页,通过主进程运行main.js,将与本地交互的代码如获取蓝牙设备信息等都交给主进程执行
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
前面在监听全部窗口关闭时间里打印了一句话:

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
中文乱码解决:修改electron启动脚本

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

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

应用打包Windows平台

安装electron-builder

npm install electron-builder  --save-dev

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

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 //允许安装时选择安装目录
    }
  }

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
在package.json里添加electron-builder的打包脚本

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

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

vue项目编译

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

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

}

执行vue编译脚本

npm run build

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

修改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);

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

electron打包

执行electron打包脚本

npm run build-electron

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

安装应用

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows
选择安装目录
web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows

执行程序

web前端项目使用electron打包成跨平台桌面端程序(Windows),vue,前端,electron,前端,electron,javascript,vue.js,node.js,npm,windows文章来源地址https://www.toymoban.com/news/detail-568308.html

到了这里,关于web前端项目使用electron打包成跨平台桌面端程序(Windows)的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 跨平台的桌面应用程序开发框架Electron | 开源日报 0906

    Stars: 109.3k License: MIT Electron 是一个基于 Node.js 和 Chromium 的开源框架,允许使用 JavaScript、HTML 和 CSS 编写跨平台的桌面应用程序。它被 Atom 编辑器等众多应用程序所采用。该项目具有以下核心优势: 跨平台:Electron 提供了 macOS、Windows 和 Linux 三个主要操作系统的二进制文件。

    2024年02月09日
    浏览(60)
  • Vue.js + Electron 的跨平台桌面应用程序开发

    本文介绍了 Vue.js 和 Electron 的基本特点和原理,并分析了它们在桌面应用程序开发中的优势和应用场景。在基于 Vue.js 和 Electron 的桌面应用程序开发实践中,本文详细介绍了项目的搭建和配置,包括环境的准备、项目的初始化和依赖的安装等步骤。然后,本文介绍了使用 Vu

    2024年02月13日
    浏览(104)
  • 我想开发一款跨平台桌面软件,请告诉我qt、electron、tauri、pyqt、flutter分别适合开发哪些跨平台桌面

    不同的跨平台桌面开发工具适用于不同的应用场景和开发者需求。以下是关于 Qt、Electron、Tauri、PyQt、Flutter 的简要说明,以帮助你更好地选择适合你项目的工具: Qt: 适用场景: Qt 是一个强大的 C++ 框架,适用于开发需要高性能和原生外观的桌面应用。它具有广泛的平台支持

    2024年02月22日
    浏览(79)
  • ElectronReactAdmin跨平台管理系统|electron27+react18后台模板EXE

    基于 electron27+react18+arco 电脑端后台管理程序EXE实例 ElectronRAdmin 。 electron27-react18-admin 基于跨平台技术 Electron 集成 Vite.js 构建桌面端 React18 后台管理系统应用解决方案。 支持dark/light主题、中英文/繁体国际化、动态组件权限验证、内置三种布局模板、tabs路由菜单标签栏 等功能

    2024年02月08日
    浏览(56)
  • Docker多平台、跨平台编译打包

    大多数带有Docker官方标识的镜像都提供了多架构支持。如:busybox镜像支持 amd64 ,  arm32v5 ,  arm32v6 ,  arm32v7 ,  arm64v8 ,  i386 ,  ppc64le , and  s390x。 当你在amd64设备上运行容器时,会拉取amd64镜像。 当你需要构建多平台镜像时,可以用 --platform 参数指定目标平台,但是通常情况下

    2024年02月06日
    浏览(68)
  • 跨平台开发神器如何在Uniapp中使用WebView实现与Web页面的通讯!

    Uniapp 是一个跨平台的开发框架,可以同时开发出 iOS、Android、H5 等多个平台的应用。在开发过程中,我们可能需要与 Web 页面进行通讯,这时可以使用 WebView 组件来实现。 本教程将介绍如何在 uniapp 中使用 WebView 组件与 Web 页面进行通讯。 首先,我们需要创建一个 uniapp 项目。

    2024年02月09日
    浏览(61)
  • 跨平台应用开发进阶(五十)uni-app ios web-view嵌套H5项目白屏问题分析及解决

    应用 uni-app 框架开发好APP上架使用过程中,发现应用经过长时间由后台切换至前台时,通过 webview 方式嵌套的H5页面发生白屏现象。 任何手机设备上,当手机内存不足时,os都会回收资源。一般是先回收后台打开的资源。如果当前应用占用的资源过高,当前应用也有可能崩溃

    2024年02月14日
    浏览(54)
  • 【GTest】使用CMakeLitsts.txt构建Windows和Linux的跨平台GoogleTest项目(非常详细+亲测有效)

    👉博__主👈:米码收割机 👉技__能👈:C++/Python语言 👉公众号👈:测试开发自动化 👉专__注👈:专注主流机器人、人工智能等相关领域的开发、测试技术 Linux构建参考我的文章:【点击这里】 windows构建静态库参考我的文章:【点击这里】 (1)创建GtestAPI的文件夹,作为

    2024年02月07日
    浏览(57)
  • 组件化、跨平台…未来前端框架将如何演进?

    前端框架在过去几年间取得了显著的进步和演进。前端框架也将继续不断地演化,以满足日益复杂的业务需求和用户体验要求。从全球web发展角度看,框架竞争已经从第一阶段的前端框架之争(比如Vue、React、Angular等),过渡到第二阶段的框架之争(比如Next、Nuxt、Remix、小程

    2024年02月14日
    浏览(58)
  • 前端移动端开发分类及跨平台开发框架简述

    前端移动端主流分为以下三种:Native App ,Hybrid App ,Web App 优点: (1)用户体验好 (2)性能稳定 (3)操作速度快 (4)能够访问本地资源(通讯录,相册) (5)能够设计出色的动效,转场 (6)拥有系统级别的贴心通知或提醒 (7)用户留存率高 缺点: (1)开发成本高

    2024年02月04日
    浏览(77)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包