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)
上一篇 2023年5月27日
下一篇 2023年5月27日

相关文章

  • vue 实现模糊检索并根据其他字符的首字母顺序排列

    实现模糊检索并根据其他字符的首字母顺序排列是前端开发中比较常见的需求之一,在 Vue 中也有很好的实现方式。 1.实现模糊检索功能 实现模糊检索的核心点是在数据源上进行筛选。假设我们有一个表格数据源: [ { name: ‘张三’, age: 21 }, { name: ‘李四’, age: 22 }, { name: ‘王五’, age: 23 }, { …

    Vue 2023年5月27日
    00
  • Vue mockjs编写假数据并请求获取实现流程

    Vue MockJS是一款用于前端mock数据的工具。其可以模拟请求API返回假数据,用于前端开发时进行数据调试、测试。本文将详细介绍Vue MockJS编写假数据并请求获取的实现流程。 1. 安装Vue MockJS 在使用Vue MockJS之前,需要确保在项目中已经安装了Vue,接着可以通过npm或yarn来安装Vue MockJS。 # 使用npm进…

    Vue 2023年5月28日
    00
  • Vue项目分环境打包的实现步骤

    实现Vue项目的环境分离,可以很好地满足开发、测试和生产环境的需求,同时也能提高代码的重用性和可维护性。以下是Vue项目分环境打包的实现步骤: 1. 创建环境变量配置文件 在Vue项目的根目录下,创建一个.env文件,用来存放全局的环境变量配置。同时在.env文件中定义两个变量:VUE_APP_API_URL和VUE_APP_DEBUG_MODE。其中,VU…

    Vue 2023年5月27日
    00
  • vue 获取视频时长的实例代码

    获取视频时长是一个常见的需求,Vue 作为一个流行的前端框架,提供了一些方便的方式来完成这个任务。本文将介绍如何使用 Vue 获取视频时长的实例代码和操作步骤。 步骤一:设置 HTML5 video 元素 首先,我们需要在页面上添加一个 HTML5 video 标签,用于加载视频。下面是一个简单的示例: <template> <video …

    Vue 2023年5月29日
    00
  • Vue组件之非单文件组件的使用详解

    下面我将为您详细讲解“Vue组件之非单文件组件的使用详解”的完整攻略。 什么是非单文件组件? 非单文件组件是指将组件的HTML、JS、CSS等代码都写在同一个文件中,并使用Vue.extend()方法将其构造成组件的一种方式。这种方式比较旧,但在一些老的Vue项目中仍有应用。目前Vue的官方文档已经不推荐使用这种方式。 非单文件组件的优缺点 优点 代码简单。…

    Vue 2023年5月28日
    00
  • 基于vue2框架的机器人自动回复mini-project实例代码

    下面是针对“基于vue2框架的机器人自动回复mini-project实例代码”的详细攻略: 1. 环境搭建 首先,我们需要搭建好vue2的项目基础环境。可以通过如下命令创建一个vue2项目: vue create robot-reply-project 然后,进入项目目录cd robot-reply-project,安装一些需要的依赖: npm i axio…

    Vue 2023年5月28日
    00
  • vue项目中使用AES实现密码加密解密(ECB和CBC两种模式)

    下面我就为你讲解在vue项目中使用AES实现密码加密解密的完整攻略。 简介 AES是一种对称加密算法,加密解密使用相同的密钥。在前后端交互中,经常需要对数据进行加密,以保证数据传输的安全性。本文将介绍如何在vue项目中使用AES实现密码加密解密。 安装依赖 在vue项目中使用AES需要安装crypto-js这个库,可以通过npm安装: npm install…

    Vue 2023年5月27日
    00
  • vue mounted组件的使用

    下面是关于“vue mounted组件的使用”的完整攻略。 什么是mounted? 在Vue组件的生命周期中,mounted是一个非常重要的生命周期钩子函数。当组件被挂载到DOM中后,mounted函数会被调用,表示组件已经完全被加载到页面上,并且模板中的所有DOM元素已经生成。 使用方法 使用mounted非常简单,只需要在Vue组件的选项中添加一个mou…

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