vite + electron 构建前端桌面应用程序

这篇具有很好参考价值的文章主要介绍了vite + electron 构建前端桌面应用程序。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。


一、创建 vite 项目

npm

 npm create vite@latest

yarn

 yarn create vite

选择是否继续

Need to install the following packages:
  create-vite@3.2.1
Ok to proceed? (y) y

项目名称

Project name: » vite-project

选择框架

Select a framework: » - Use arrow-keys. Return to submit.
>   Vanilla
    Vue
    React
    Preact
    Lit
    Svelte
    Others

选择项目语言

Select a variant: » - Use arrow-keys. Return to submit.
>   TypeScript
    JavaScript
    Customize with create-vue ↗
    Nuxt ↗

项目构建成功,根据提示进入项目目录,安装依赖

Done. Now run:

  cd vite-project
  npm install
  npm run dev

vite + electron 构建前端桌面应用程序

二、构建 Electron 项目

electron 官网:https://www.electronjs.org/zh/docs/latest/

vite-plugin-electron :https://github.com/electron-vite/vite-plugin-electron

安装依赖(electron 安装比较慢,耐心等待即可)

npm install electron -D
npm install vite-plugin-electron -D 

编写 Electron 入口文件,创建 electron/main.ts,与 src 目录同级

// app 控制应用程序的事件生命周期(相当于应用程序)
// BrowserWindow 创建并控制浏览器窗口(相当于打开桌面弹框)
import { app, BrowserWindow, Menu } from 'electron'
import path from 'path'

// 定义全局变量,获取窗口实例
let win: BrowserWindow | null;


/**
 * 创建一个窗口
 */
const createWindow = () => {
    win = new BrowserWindow({
        width: 1200,
        height: 800,
        center: true,
        // autoHideMenuBar: true,
        backgroundColor: 'rgb(0, 0, 0)',
        webPreferences: {
            devTools: true,
            // 集成网页和 Node.js,也就是在渲染进程中,可以调用 Node.js 方法
            nodeIntegration: true,
            contextIsolation: false,
        }
    })

    // You can use `process.env.VITE_DEV_SERVER_URL` when the vite command is called `serve`
    if (process.env.VITE_DEV_SERVER_URL) {
        win.loadURL(process.env.VITE_DEV_SERVER_URL)
    } else {

        // Load your file
        win.loadFile(path.resolve(__dirname, '../dist/index.html'));
    }

    // 关闭窗口时就关闭程序,避免占用过多资源
    win.on("close", () => {
        win = null
    })
}

// 自定义菜单
const createMenu = () => {
    const Menus: any = [
        {
            label: 'Files',
            submenu: [
                {
                    label: '网页版',
                    role: 'help',
                    submenu: [{
                        label: '网页版',
                        click: function () {
                            alert('网页版')
                        }
                    }]
                },
                {
                    label: '帮助',
                    role: 'help',
                    submenu: [{
                        label: '帮助文档',
                        click: function () {
                            alert('帮助文档')
                        }
                    }]
                }
            ]
        }
    ];

    const mainMenu = Menu.buildFromTemplate(Menus);
    Menu.setApplicationMenu(mainMenu);
}


// 初始化app(在 Electron 完成初始化时触发),挂载上面创建的 桌面应用程序窗口
app.whenReady().then(() => {
    createWindow()
    // createMenu()
})

在 vite.config.ts 中,配置 Electron 入口文件(注意:vite-plugin-electron 版本不同,electron 配置可能不一样)

import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import electron from 'vite-plugin-electron'

// https://vitejs.dev/config/
export default defineConfig({
    plugins: [
        vue(),
        electron({
            entry: 'electron/main.ts',
        }),
    ],
})

在 package.json 中,增加 main 字段,去掉 type 字段

🚨 默认情况下, electron 文件夹下的文件将会被构建到 dist-electron(注意:vite-plugin-electron 版本不同,构建的文件夹也可能不同)

🚨 目前, Electron 尚未支持 “type”: “module”,需要去掉 type 字段

 "main": "dist-electron/main.js",

运行项目

npm run dev

vite + electron 构建前端桌面应用程序

三、打包 Electron 桌面程序

安装打包依赖 electron-builder

npm install electron-builder -D 

在 package json 中,配置 build 命令

"build": "vue-tsc --noEmit && vite build && electron-builder"

修改 package.json,增加 electron-builder 相关配置

🚨 注意:下面 build/files中,dist/**/* 是项目打包文件,dist-electron/**/* 是 Electron 入口文件,插件版本不同所构建的文件夹可能不同

"build": {
    "appId": "com.electron.desktop",
    "productName": "electron",
    "asar": true,
    "copyright": "Copyright © 2022 electron",
    "directories": {
        "output": "release/"
    },
    "files": [
        "dist/**/*",
        "dist-electron/**/*"
    ],
    "mac": {
        "artifactName": "${productName}_${version}.${ext}",
        "target": [
            "dmg"
        ]
    },
    "win": {
        "target": [
            {
                "target": "nsis",
                "arch": [
                    "x64"
                ]
            }
        ],
        "artifactName": "${productName}_${version}.${ext}"
    },
    "nsis": {
        "oneClick": false,
        "perMachine": false,
        "allowToChangeInstallationDirectory": true,
        "deleteAppDataOnUninstall": false
    },
    "publish": [
        {
            "provider": "generic",
            "url": "http://127.0.0.1:8080"
        }
    ],
    "releaseInfo": {
        "releaseNotes": "版本更新的具体内容"
    }
},

执行打包,安装应用

npm run build

vite + electron 构建前端桌面应用程序

🚨 解决办法:关闭电脑管家、360或者别的杀毒软件即可;

vite + electron 构建前端桌面应用程序
打包成功后,生成的文件都放到了 release 目录下(之前在 package.json 里是这么配置的)

点击 electron_0.0.0.exe ,安装即可;

vite + electron 构建前端桌面应用程序
安装之后运行程序,页面没有出来,控制台有错

看到这个错首先我们找到 release/win-unpacked/resources,找到 app.asar 然后解压 app.asar

安装 asar 工具

npm install -g asar

asar 的压缩与解压

解压:asar extract app.asar app

asar extract 源app.asar文件  目标解压文件夹

压缩:asar pack app app.asar

asar pack 源解压文件夹  目标asar压缩文件名(app.asar)

vite + electron 构建前端桌面应用程序

解压之后可以看到 dist-electron 和 dist 是同一级的,修改 electron/main.ts 即可

 win.loadFile(path.resolve(__dirname, '../dist/index.html'));

四、项目地址

项目地址:https://github.com/aibuijn/vite-electron文章来源地址https://www.toymoban.com/news/detail-464524.html

到了这里,关于vite + electron 构建前端桌面应用程序的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

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

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

相关文章

  • 如何使用Vue.js构建桌面应用程序

    Vue.js是一个流行的JavaScript框架,可以用于构建Web应用程序。但是,Vue.js也可以用于构建桌面应用程序。本文将介绍如何使用Vue.js构建桌面应用程序,包括以下步骤: 1. 选择一个Vue.js框架:选择一个适合你的Vue.js框架。我们推荐使用Electron,因为它是最流行的桌面应用程序框架

    2024年02月15日
    浏览(52)
  • 基于Vue前端框架构建BI应用程序

    Vue(Vue.js)是一个轻量级、高性能、可组件化的MVVM库。简而言之,是一个构建数据驱动的web界面的渐进式框架。它采用MVVM思想,通过数据双向绑定实现数据的动态渲染,同时也支持组件化的开发方式,使开发更加高效和可复用。 响应式编程: Vue会自动对页面中某些数据的变

    2024年02月10日
    浏览(52)
  • Vue3 Vite electron 开发桌面程序

    Electron是一个跨平台的桌面应用程序开发框架,它允许开发人员使用Web技术(如HTML、CSS和JavaScript)构建桌面应用程序,这些应用程序可以在Windows、macOS和Linux等操作系统上运行。 Electron的核心是 Chromium 浏览器内核和 Node.js 运行时环境。 Chromium 内核提供了现代浏览器的功能,

    2024年02月16日
    浏览(42)
  • 基于Electron24+Vite4+Vue3搭建桌面端应用

    一说到创建桌面应用,就不得不提及Electron和Tauri框架。这次给大家主要分享的是基于electron最新版本整合vite4.x构建vue3桌面端应用程序。 之前也有使用vite2+vue3+electronc创建桌面端项目,不过  vue-cli-plugin-electron-builder  脚手架插件构建的项目electron版本只有13.x。如今electron版本

    2024年02月06日
    浏览(70)
  • 使用electron-vite +Vue+ElementPlus开发跨平台桌面应用

    我们的项目是基于Elasticsearch来进行数据的存储与查询的,使用过ES的朋友应该都比较清楚,现在还没有一个比较友好的ES的桌面客户端软件可以和MySQL的桌面客户端软件媲美的,使用ES起来非常麻烦,经常会被吐槽的三个点: 资深测试吐槽:为什么技术选型要选择ES,增删改查

    2023年04月09日
    浏览(92)
  • 使用angular和electron 构建桌面应用

    新建一个angular app 修改src/index.html文件内容 将绝对路径改为相对路径,加个点,使electron可以访问到angular文件资源

    2024年02月14日
    浏览(40)
  • electron+Vue3构建桌面应用之IPC通讯

    最近在做一个C/S架构的项目预研 过程中遇到 Electron 与 Vue3 通讯的问题,费劲巴力的在网上找方案,发现都不理想,最终攻克之后,计划将过程写下来,供有需求的同学白嫖! 开始之前,先说一件重要的事情: 看文档 看官方文档 一定要看官方文档 好,言归正传。 先说需求

    2024年04月29日
    浏览(40)
  • 探索 Electron Egg:构建跨平台桌面应用的理想选择

    随着Web技术的不断发展,构建跨平台桌面应用的需求也在逐渐增加。Electron Egg作为一个结合了Electron和Vue.js的框架,为开发者提供了一个简单而强大的工具,使他们能够快速构建出优秀的桌面应用。本文将介绍Electron Egg的核心特性、优势以及如何开始使用这个框架。 什么是

    2024年02月20日
    浏览(69)
  • 前端桌面应用开发实践:Electron入门指南

    随着互联网的快速发展,前端开发不再局限于网页应用,而是逐渐涉及到桌面应用的开发。Electron作为一种流行的前端桌面应用开发框架,为开发者提供了一种快速构建跨平台桌面应用的方式。本文将介绍Electron的基本概念和使用方法,并通过一个简单的示例来说明其开发实践

    2024年02月11日
    浏览(47)
  • WEB跨平台桌面程序构建工具对比(Electron、Tauri、Wails)

    WEB 跨平台 桌面应用程序 顾名思义就是用 JavaScript、HTML、CSS 等前端技术构建跨平台的桌面应用,WEB 负责 GUI 渲染并与后端(如 Node.js、Python、Rust 等)交互,从而突破自身无法操作 OS 层级资源的限制。其实现在如火如荼的 小程序 原理也类似,只是把后端换成宿主 APP (如微信

    2024年02月05日
    浏览(52)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包