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

下面我将为你详细讲解 "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)
上一篇 4天前
下一篇 4天前

相关文章

  • vue项目中使用require.context引入组件

    Vue项目中使用require.context引入组件可以方便我们快速地载入一批组件,特别是在开发大型项目时,能够大大提高效率。下面是具体的步骤: 安装依赖 首先,我们需要安装babel-plugin-require-context-hook插件来解析使用require.context方法引入的组件。在项目根目录下执行以下命令: npm install ba…

    Vue 3天前
    00
  • vue2.0的计算属性computed和watch的区别及各自使用场景解读

    Vue2.0的计算属性computed和watch的区别及各自使用场景解读 Vue2.0中,Vue实例提供了两种方法:computed和watch来追踪和响应状态变化。 计算属性computed 定义:computed是一个计算属性,其返回值依赖于其他的状态数据。computed属性默认只有getter方法,因此不可以修改。 示例 <template&…

    Vue 2天前
    00
  • 如何在Vue中使用debouce防抖函数

    当我们在Vue组件中使用一些高频操作时,例如input事件的实时搜索,我们会发现输入一个字母就会发送一次请求,导致不必要的请求和资源浪费,这时候可以通过引入debounce防抖函数进行优化。下面是关于在Vue中使用debounce防抖函数的完整攻略: 1. 安装lodash debounce函数通常是使用lodash库中的_.debounce函数来实现的,因…

    Vue 3天前
    00
  • Vue3计算属性和异步计算属性方式

    Vue3中计算属性和异步计算属性的使用方式与Vue2有所不同。接下来将详细讲解Vue3计算属性和异步计算属性的使用方式,并附上两个示例说明。 Vue3计算属性 Vue3中,计算属性仍然是一个非常重要的概念,主要是为了方便我们处理模板中的复杂计算逻辑。Vue3计算属性的使用方法与Vue2基本相同。 基本使用 在Vue3中,可以通过computed选项来定义计算…

    Vue 4天前
    00
  • Vue生命周期详解

    Vue生命周期详解 Vue.js 是一个 MVVM 框架,在组件渲染过程中,每个组件都有自己的生命周期。这里将详细介绍 Vue 组件的生命周期函数。 Vue 组件生命周期可以分为四个阶段: 创建阶段 create 挂载阶段 mount 更新阶段 update 销毁阶段 destroy 创建阶段 create 在创建阶段,Vue 组件将从组件配置对象的初始化属…

    Vue 3天前
    00
  • Vue打包后不同版本详细解析

    让我们来详细讲解“Vue打包后不同版本详细解析”的完整攻略。 什么是Vue打包 Vue打包是将Vue应用程序的源代码转换为优化的、最终可执行的Javascript代码的一个过程。这个过程主要由构建工具webpack完成,webpack会根据配置文件对Vue应用程序进行各种处理,包括代码的压缩、模块化打包、样式打包等等。 打包后的版本有哪些 打包后的版本有两种…

    Vue 3天前
    00
  • Vue中$on和$emit的实现原理分析

    Vue中$on和$emit的实现原理分析 介绍 在Vue中,$on和$emit是两个非常常用的方法,用于实现事件的监听和触发。$on方法用于监听事件,$emit方法用于触发事件。本文将对Vue中$on和$emit的实现原理进行分析和讲解。 $on的实现原理 $on方法用于监听事件,其实现原理很简单,就是将事件名和事件处理函数保存到一个对象中。在触发事件时,遍…

    Vue 3天前
    00
  • 在Vue中是如何封装axios

    在Vue中,axios库通常用于进行网络请求。为了方便代码复用和管理,我们可以将axios进行封装,封装后的axios可以配置全局的拦截器、预设基础路径、统一处理错误响应等。下面是封装axios的完整攻略: 1. 安装axios 在封装axios之前,我们首先需要安装axios库。在项目根目录下打开终端,输入以下命令进行安装: npm install axi…

    Vue 3天前
    00
  • vue.js watch经常失效的场景与解决方案

    Vue.js Watch经常失效的场景与解决方案 在使用Vue.js的过程中,watch是非常常用的一个功能,它可以监听数据的变化并实现相应的操作,但是在实际开发中使用watch时可能会出现失效的情况,本文将讲解Watch失效的场景及解决方案。 Watch 失效的场景 深度监听 在Vue.js中,许多组件和工具可以帮助我们在数据更改时实时更新视图。这是通过“…

    Vue 3天前
    00
  • React和Vue中监听变量变化的方法

    关于React和Vue中监听变量变化的方法,我们可以从以下两个方面进行详细讲解: 在React中监听变量变化的方法 在React中,要想监听变量变化,可以通过使用React自带的“状态”(state)和“属性”(props)来实现。 使用状态(state) 状态是React组件自带的一个对象,通过setState()方法来修改状态。当状态发生改变时,Reac…

    Vue 4天前
    00