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 axios用法教程详解

    Vue Axios用法教程详解 Vue.js是一个流行的JavaScript框架,用于构建交互式Web应用程序。Axios是一种常用的基于Promise的HTTP客户端,用于通过RESTful API发送HTTP请求。 本教程将详细介绍Vue Axios的用法,包括如何安装、设置和使用。 安装 安装Axios最简单的方法是使用npm,在命令行中运行以下命令:…

    Vue 2023年5月28日
    00
  • 从0搭建Vue3组件库如何使用 glup 打包组件库并实现按需加载

    下面是从0搭建Vue3组件库并使用glup打包组件库实现按需加载的完整攻略。 步骤一:搭建组件库的开发环境 1.1 环境依赖 首先,我们需要安装Node.js和npm。在安装完成之后,可以在命令行中输入以下命令进行确认: node -v # 查看当前Node.js版本 npm -v # 查看当前npm版本 1.2 创建Vue3组件库 Vue3框架已经正式发布…

    Vue 2023年5月28日
    00
  • vue-cli项目中遇到的eslint的坑及解决

    在Vue项目中使用ESLint可以规范代码风格,提高代码质量,但有时会遇到一些ESLint的坑。在vue-cli项目中遇到的ESLint的坑及解决方法如下: 1. VS Code使用ESLint插件无法生效 在VS Code中安装并启用了ESLint插件(如ESLint、Vetur),但并不能如预期般发现编写的代码不符合ESLint规范时提示错误信息或警告信…

    Vue 2023年5月28日
    00
  • Vue浅析讲解动态组件与缓存组件及异步组件的使用

    Vue浅析讲解动态组件与缓存组件及异步组件的使用 在Vue的开发中,组件化是非常重要的一个概念。而动态组件、缓存组件、异步组件也是Vue中非常常用而且重要的一部分。本文将带你对这三个组件做一个浅析讲解,并给出两个示例来说明。 动态组件 动态组件在Vue中允许我们在多个组件之间进行动态切换。简单来说,当我们需要在一组组件中动态地切换展示哪个组件的时候,使用动态…

    Vue 2023年5月28日
    00
  • vue.js 实现v-model与{{}}指令方法

    下面我来详细讲解一下“vue.js 实现v-model与{{}}指令方法”的完整攻略。 什么是v-model指令? 在vue.js中,v-model指令用于在用户表单输入和应用程序之间创建双向数据绑定。它会根据控件类型自动选取正确的方法来更新元素,包括input、textarea、select等。 v-model指令的用法: v-model指令需要和表单元素…

    Vue 2023年5月28日
    00
  • Vue中使用JsonView来展示Json树的实例代码

    下面是关于“Vue中使用JsonView来展示Json树的实例代码”完整攻略的详细解释: 什么是JsonView? JsonView(也称为JSON Viewer)是一种用于查看JSON数据的工具,它可以将JSON格式的数据转化为可读性高的树状结构。在Vue中,我们可以借助JsonView插件来展示JSON数据的树状结构,让JSON数据更加易读易操作。 安装…

    Vue 2023年5月28日
    00
  • Vue.js 中的 v-show 指令及用法详解

    Vue.js 中的 v-show 指令及用法详解 v-show 是 Vue.js 中的一个指令,它可以控制元素的显示和隐藏。 语法 使用 v-show 指令可以将元素的显示状态与布尔值绑定,当绑定的布尔值为 true 时元素显示,为 false 时元素隐藏。 <div v-show="showElement"></div…

    Vue 2023年5月28日
    00
  • vue实现列表的添加点击

    下面是关于如何使用Vue实现列表的添加点击的完整攻略。为了使内容更加易懂,我将分为以下几个部分进行讲解: Vue组件的创建 列表的初始化 实现添加点击功能 1. Vue组件的创建 首先,我们需要在Vue中创建一个组件用于显示列表,示例代码如下: <template> <div> <ul> <li v-for=&quo…

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