vue3+ts+vite+electron搭建桌面应用的过程

下面是关于使用Vue3、TypeScript、Vite和Electron搭建桌面应用的完整攻略。

搭建步骤

1. 创建项目工程

首先需要安装Vite脚手架,在终端中输入以下命令安装:

npm install -g create-vite-app

安装完成后,通过以下命令创建项目工程:

create-vite-app my-project

此时会询问你需要使用哪种模板,这里选择Vue 3和TypeScript。然后根据提示操作即可。

2. 集成Electron

接下来,需要把Vue项目改造为Electron应用。先安装以下依赖:

npm install -D electron @types/electron

安装完成后,在项目的根目录下创建一个名为main.js的文件,内容如下:

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

function createWindow() {
  const win = new BrowserWindow({
    width: 800,
    height: 600,
    webPreferences: {
      nodeIntegration: true,
      enableRemoteModule: true,
    },
  })

  win.loadFile('index.html')
}

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

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

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

package.json文件中添加一条"main"字段,指向刚创建的main.js文件:

{
  "main": "main.js",
  // ...
}

接下来,可以尝试在终端中运行以下命令启动Electron应用:

npm run electron

此时,Electron应用会打开一个为空的窗口,表示已经成功集成到项目中。

3. 集成Vue Router

为了方便页面间的跳转,需要集成Vue Router。先安装以下依赖:

npm install vue-router@next
npm install -D @types/vue-router

src目录下创建一个名为router.ts的文件,内容如下:

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

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

const router = createRouter({
  history: createWebHashHistory(),
  routes,
})

export default router

main.ts文件中引入router并注入:

import { createApp } from 'vue'
import App from './App.vue'
import router from './router'

const app = createApp(App)

app.use(router)
app.mount('#app')

4. 打包和发布应用

最后一步是打包和发布应用。在package.json文件中添加以下脚本命令:

{
  "scripts": {
    "build": "vite build && electron-builder",
    "release": "vite build && electron-builder --publish always"
  }
}

其中,electron-builder是一个打包工具,always表示每次发布应用都会更新,也可以设置成latest

执行以下命令进行打包:

npm run build

该命令会生成一个名为dist的目录,其中的文件就是应用程序的打包文件,在不同平台和操作系统上均可运行。

如果要发布应用,可以执行以下命令:

npm run release

该命令会把打包好的文件上传至GitHub Release,并生成一个名为latest.yml的文件以便自动更新应用程序。

示例说明

示例一:添加新页面

src/views目录下新建一个名为Foo.vue的文件,内容如下:

<template>
  <h1>Foo Page</h1>
</template>

src/router.ts文件中添加以下路由:

{
  path: '/foo',
  name: 'Foo',
  component: () => import('./views/Foo.vue'),
},

此时,在应用程序中就可以通过/foo进行跳转,访问新页面了。

示例二:添加菜单

main.js文件中添加以下代码:

const { Menu } = require('electron')

const template = [
  {
    label: 'File',
    submenu: [{ role: 'quit' }],
  },
  {
    label: 'Edit',
    submenu: [
      { role: 'undo' },
      { role: 'redo' },
      { type: 'separator' },
      { role: 'cut' },
      { role: 'copy' },
      { role: 'paste' },
      { role: 'delete' },
      { role: 'selectAll' },
    ],
  },
]

const menu = Menu.buildFromTemplate(template)
Menu.setApplicationMenu(menu)

这段代码会添加菜单栏,包括文件和编辑两个菜单,分别包含退出、撤销、恢复、剪切、复制、粘贴、删除和全选等功能。在菜单栏中就可以方便地进行不同操作。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:vue3+ts+vite+electron搭建桌面应用的过程 - Python技术站

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

相关文章

  • vue bus全局事件中心简单Demo详解

    Vue Bus全局事件中心简单Demo详解 什么是Vue Bus? Vue Bus是一种在Vue应用程序中使用的全局事件总线(Event Bus),它提供了一种简单而有效的方法来管理应用程序中的组件之间的通信。 如何使用Vue Bus? 使用Vue Bus非常简单。首先,我们需要在项目中安装Vue Bus: npm install vue-bus –sav…

    Vue 2023年5月27日
    00
  • mqtt.js 无法连接/错误提示 WebSocket connection to ‘ws://xxxxx‘ failed:的解决方法

    首先,需要了解一下MQTT协议和mqtt.js库。MQTT是一种用于物联网的轻量级协议,基于发布/订阅模式,支持良好的可靠性和低带宽消耗。而mqtt.js是MQTT协议的JavaScript客户端库,可以用于浏览器和Node.js环境下。 当在使用mqtt.js连接MQTT服务器时,出现“WebSocket connection to ‘ws://xxxxx…

    Vue 2023年5月28日
    00
  • vue项目配置eslint保存自动格式化问题

    下面是关于Vue项目配置ESLint保存自动格式化的完整攻略: 安装相关插件 首先,需要在Vue项目中安装eslint和eslint-plugin-prettier两个插件,可以使用npm安装,命令如下: npm install eslint eslint-plugin-prettier –save-dev 配置.eslintrc.js文件 在Vue项目的…

    Vue 2023年5月28日
    00
  • vue如何修改data中数据问题

    要修改Vue中的数据,可以通过两种方法:使用Vue提供的方法或直接修改data中的数据。以下是详细的攻略: 使用Vue提供的方法修改数据 Vue提供了许多可以修改data中数据的方法,常用的有以下几种: $set $set方法可以动态地向Vue实例添加一个响应式属性,用法如下: this.$set(this.data, ‘newValue’, ‘这是新的值’…

    Vue 2023年5月28日
    00
  • Vue中使用vux的配置详解

    Vue.js 是一个流行的前端框架,Vux 是一个基于 Vue.js 的 UI 组件库。在 Vue.js 项目中使用 Vux 可以快速构建出美观易用的 UI 界面,有效提高开发效率。如何在 Vue.js 中使用 Vux 呢?本攻略将提供一份详细的配置方案来指导你完成这个过程。 1. 安装 Vux 首先,你需要使用 npm 或 yarn 来安装 Vux。在命令…

    Vue 2023年5月28日
    00
  • 基于pako.js实现gzip的压缩和解压功能示例

    关于“基于pako.js实现gzip的压缩和解压功能示例”的完整攻略,我可以给您提供以下步骤: 确认环境 在开始使用pako.js之前,需要确保环境中已经包含有pako.js的文件,可以通过以下方式进行安装: npm install pako 引入pako.js 在代码中引入pako.js: <!DOCTYPE html> <html&gt…

    Vue 2023年5月28日
    00
  • Vue项目中封装axios的方法

    下面我来详细讲解一下“Vue项目中封装axios的方法”的完整攻略。 为什么要封装axios? 首先,我们需要知道为什么要封装axios。axios是一个非常好用的第三方库,但是在很多情况下,我们需要对axios进行一些封装才能更好地满足我们的需求。主要有以下几点原因: 方便统一处理请求异常、错误提示、请求头等 方便设置全局loading效果 方便在请求前和…

    Vue 2023年5月28日
    00
  • Vue中状态管理器(vuex)详解以及实际应用场景

    Vue中状态管理器(Vuex)详解以及实际应用场景 一、什么是Vuex Vuex是一个用于Vue.js应用程序的状态管理模式。它采用集中式存储管理应用的所有组件状态,并以相应的规则保证状态以一种可预测的方式发生变化。Vuex 也集成到 Vue 的官方调试工具 devtools extension ,提供了诸如零配置的 time-travel 调试、状态快照导…

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