Vite+Electron快速构建VUE3桌面应用的实现

yizhihongxing

下面我将为你详细讲解 "Vite + Electron 快速构建 Vue3 桌面应用的实现"。

简介

Vite 是一个基于 JavaScript 的构建工具,旨在提供一种快速开发的体验。它专注于提供简单的配置、快速的热更新功能以及媲美于 Webpack 的构建功能,对于快速实现前端开发者的需求非常有帮助。

Electron 是一个基于 Node.js 和 Chromium 的桌面应用框架,它可以将 Web 技术应用到桌面应用程序开发中,提供了和原生应用相媲美的用户体验,也极大地方便了前端开发人员的开发和部署。

Vue3 是一个支持更好的 TypeScript 和 Composition API 的新版本 Vue,拥有更方便的开发体验,以及更快的渲染速度。

在实际的前端开发中,我们通常会使用Vue框架开发Web应用程序,但是在很多情况下,我们需要将Web应用部署到桌面环境中,这就需要使用到桌面应用框架Electron,同时使用 Vite 可以更好的提升前端开发效率。

下面就详细讲解如何使用 Vite+Electron 快速构建 Vue3 桌面应用。

步骤

1. 创建 Vue3 项目

首先我们需要创建一个基于 Vue3 的项目,我们可以直接使用 Vue 官方的脚手架来创建:

npm init @vitejs/app my-electron-vue3-app --template vue-ts

2. 安装 Electron

接下来我们需要安装 Electron,使用以下命令:

npm install --save-dev electron

3. 配置 Vite

我们需要在项目的根目录下创建一个 vite.config.ts 配置文件,并进行以下配置:

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

export default defineConfig({
  plugins: [vue()],
  resolve: {
    alias: {
      '@': '/src',
    },
  },
  build: {
    outDir: 'dist/renderer', // 打包后的文件存储目录
    emptyOutDir: true,
    assetsDir: '.', // Vite 处理的静态资源目录, '.' 表示根目录
  },
})

4. 配置 Electron

在项目的根目录下创建一个名为 main.ts 的文件,这是我们创建 Electron 应用程序的入口文件,进行以下配置:

import { app, BrowserWindow } from 'electron'
import path from 'path'

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
      contextIsolation: false,
      preload: path.join(__dirname, 'preload.js'),
    },
  })

  if (process.env.NODE_ENV === 'development') {
    win.loadURL(`http://localhost:3000`)
    win.webContents.openDevTools()
  } else {
    win.loadFile(path.join(__dirname, '../renderer/index.html'))
  }
}

app.whenReady().then(() => {
  createWindow()

  app.on('activate', async () => {
    if (BrowserWindow.getAllWindows().length === 0) {
      createWindow()
    }
  })
})

app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') {
    app.quit()
  }
})

index.html 中加载静态资源时,需要指定 base,并且在 router/index.ts 中也需要进行相应的配置:

import { createRouter, createWebHashHistory, RouteRecordRaw } from 'vue-router'

const routes: RouteRecordRaw[] = [
  {
    path: '/',
    name: 'Home',
    component: () => import('@/views/Home.vue'),
  },
]

const router = createRouter({
  history: createWebHashHistory(process.env.BASE_URL),
  routes,
})

export default router

5. 编写运行命令

package.json 中进行以下配置:

{
  "scripts": {
    "dev": "vite && electron .",
    "build": "vite build"
  }
}

6. 构建和打包

使用以下命令进行构建:

npm run build

构建完成后会生成一个 dist/renderer 目录,在 dist 下再创建一个 main.js 文件,内容为:

const { app, BrowserWindow } = require('electron')
const path = require('path')

let mainWindow

function initialize() {
  function createWindow() {
    mainWindow = new BrowserWindow({
      width: 852,
      height: 600,
      webPreferences: {
        nodeIntegration: true,
        enableRemoteModule: true,
        contextIsolation: false,
        preload: path.join(__dirname, 'preload.js'),
      },
    })

    mainWindow.loadFile('index.html')

    mainWindow.on('closed', function () {
      mainWindow = null
    })
  }

  app.on('ready', createWindow)

  app.on('window-all-closed', function () {
    if (process.platform !== 'darwin') app.quit()
  })

  app.on('activate', function () {
    if (mainWindow === null) createWindow()
  })
}

initialize()

然后使用以下命令打包:

electron-builder build --mac --win

这样我们就实现了使用 Vite+Electron 快速构建 Vue3 桌面应用的过程了。

示例说明

示例1:在 Electron 项目中引入 Bootstrap

index.html 中加入以下代码:

<link rel="stylesheet" href="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.0.0-beta1/css/bootstrap.min.css" integrity="sha384-UPlrc8yavQRYiG9j5SC0E/W5BvAugJJ6Xx/ntIWNjx5LOifNidY02YdLtapMMUtL" crossorigin="anonymous">
<script src="https://cdn.bootcdn.net/ajax/libs/bootstrap/5.0.0-beta1/js/bootstrap.bundle.min.js" integrity="sha384-D5wV+zsnSozV/UuMf0zGGm7uSEOIccN7z5kXwbrHS/4Kv3UMkpejUWEM1o/Qxz6X" crossorigin="anonymous"></script>

这样我们就成功为 Electron 项目引入了 Bootstrap。

示例2:使用 Redis 做数据存储

首先我们需要安装 redis:

npm install redis

然后创建一个叫 utils/redis.ts 的文件,在该文件中实现 Redis 的数据存储功能。

import redis from 'redis'

function set(key: string, value: string) {
  const client = createClient()
  client.set(key, value, redis.print)
}

function get(key: string, callback: Function) {
  const client = createClient()
  client.get(key, callback)
}

function createClient() {
  return redis.createClient(
    process.env.REDIS_PORT,
    process.env.REDIS_HOST,
    {
      auth_pass: process.env.REDIS_PASSWORD,
    },
  )
}

export default {
  set,
  get,
}

这样我们就可以使用 Redis 来做数据存储了。

以上就是使用 Vite+Electron 快速构建 Vue3 桌面应用的完整攻略,如果有不懂的地方可以留言哦。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Vite+Electron快速构建VUE3桌面应用的实现 - Python技术站

(0)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • 如何构建 vue-ssr 项目的方法步骤

    如何构建 Vue SSR 项目的方法步骤 Vue SSR,即 Vue.js 服务器端渲染,能够提高网站的首屏渲染速度,对于 SEO 也有很大的帮助。下面是构建 Vue SSR 项目的完整攻略: 安装依赖和插件 首先需要在项目中安装 vue-server-renderer,命令如下: npm install vue-server-renderer –save…

    Vue 2023年5月27日
    00
  • vue下载excel文件的四种方法实例

    下面是“vue下载excel文件的四种方法实例”的完整攻略: 1. 基于前端导出Excel库的实现 使用前端导出Excel库(如FileSaver.js),将数据导出为.xlsx或.csv格式的文件,使其能够被浏览器下载。 import { saveAs } from ‘file-saver’; //导入FileSaver.js库 export functi…

    Vue 2023年5月28日
    00
  • vue3+ts+axios+pinia实现无感刷新方式

    让我来为你详细讲解“vue3+ts+axios+pinia实现无感刷新方式”的完整攻略。 什么是无感刷新? “无感刷新”又称为“局部刷新”,是指在不需要刷新整个页面的情况下,只刷新某个局部区域的内容。这种方式可以提升用户体验,避免因整个页面刷新而导致的卡顿和等待。 准备工作 在开始实现无感刷新之前,需要准备好以下工具和依赖: Vue3:一个流行的JavaSc…

    Vue 2023年5月28日
    00
  • vue实现评价星星功能

    下面我将详细讲解“Vue实现评价星星功能”的完整攻略。 一、需求分析 在实现评价星星功能之前,我们需要首先明确需求,即实现一个能够显示、选择和保存星星评分数据的组件。在这个组件中,用户可以看到默认的星星评分,也可以选择一定的星星数量来提交评分数据。 二、界面设计 设计星星评价组件的界面,可以使用普通的HTML和CSS,然后在Vue里面进行引用。 其中,评分界…

    Vue 2023年5月29日
    00
  • vue 根据选择的月份动态展示日期对应的星期几

    要实现“vue 根据选择的月份动态展示日期对应的星期几”,可以考虑以下步骤: 首先,你需要使用vue组件构建一个日历。可以使用第三方组件库,如Vuetify,或根据自己的需求自行构建。 然后,你需要在组件中添加一个月份选择器,以便用户可以选择日期所在的月份。可以使用第三方组件库,如ElementUI的DatePicker组件,或根据自己的需求自行构建。 当用…

    Vue 2023年5月29日
    00
  • Vue中splice()方法对数组进行增删改等操作的实现

    在Vue中,我们可以使用数组的splice()方法对数组进行增删改等操作。splice()方法可以对数组进行任意位置的添加、删除、修改等操作,具体的使用方法如下: array.splice(index, howMany, [element1][, …, elementN]) 参数解释: index:必选参数,规定要添加/删除/修改的元素的位置。 howM…

    Vue 2023年5月28日
    00
  • 2022最新前端常见react面试题合集

    下面我将为您详细讲解“2022最新前端常见react面试题合集”的完整攻略,具体过程如下: 1.了解React框架 在回答React面试题之前,我们需要了解React框架的基本知识。这包括掌握React组件、虚拟DOM、生命周期函数以及Redux等内容。在掌握React框架的基础上,才能更好地回答相关的面试题。同时,也要学会使用React相关的工具,比如We…

    Vue 2023年5月28日
    00
  • vue2基本响应式实现方式之让数组也变成响应式

    让数组也变成响应式是Vue框架中非常重要的一块内容。下面我将详细讲解Vue2的基本响应式实现方式来实现这个功能。 Vue2基本响应式实现方式 Vue2使用了ES5 Object.defineProperty() 方法来实现数据的响应式。它会递归遍历对象所有的属性,并使用 Object.defineProperty() 方法把它们转换为 getter/sett…

    Vue 2023年5月29日
    00
合作推广
合作推广
分享本页
返回顶部