探索 Electron:如何利用Electron和Vite打造高效桌面应用

Electron是一个开源的桌面应用程序开发框架,它允许开发者使用Web技术(如 HTML、CSS 和 JavaScript)构建跨平台的桌面应用程序,它的出现极大地简化了桌面应用程序的开发流程,让更多的开发者能够利用已有的 Web 开发技能来构建功能强大且跨平台的应用程序,这对于提升开发效率和应用程序的快速交付具有重要意义。

目录

初始项目搭建

目录文件详解

路由配置管理

公共仓库配置


初始项目搭建

        在开发Electron桌面应用之前需要进行环境的配置,对于内部来说需要安装三个大件,也就是我之前所说的 Chromium、Node.js、Native apis,显然的话我们需要提前具备node的开发环境的,这对于前端开发者来说肯定不是问题,如果不是请参考我之前的文章进行安装:地址 ,vite团队已经帮助我们协调electron进行开发了  地址,接下来我们探讨一下如何在vite中使用electron:

至于Chromium和Native apis的话,我们就需要再下载Electron这样一个包去进行获取,这里拿vite进行一个简单的演示,这边参考我之前的文章:超详细教程——vite脚手架的搭建与使用 ,安装一下vite搭配的vue环境,最终得到网页版web页面如下:

接下来我们要开始借助electron-vite开发桌面端应用,需要终端执行如下命令安装electron: 

# npm
npm create @quick-start/electron@latest

# yarn
yarn create @quick-start/electron

# pnpm
pnpm create @quick-start/electron

这里就记住平常使用的npm进行安装吧,执行命令之后输入项目名称选择对应模板,这里就选vue进行讲解吧,如下:

根据需求选择是否使用TS,博主写项目一般都选择TS,这里也就选择TS吧:

是否添加electron更新的插件,当然必须选上:

是否下载electron的镜像代理,这里也选上吧:

配置完成之后,切换到对应项目目录,终端执行 npm i 安装好依赖,终端执行 npm run dev,可以看到我们的项目已经跑起来了,初识页面看着也是非常的简约大气,项目也是给我们默认配置好了相关的插件便于代码的书写:

目录文件详解

electron-vite-vue项目其实和我们平常使用的vite-vue项目基本上大差不差,无非是多了几个文件夹而已,这里我们就比平常额外多出的文件夹的作用做一个简单的详解:

out:该文件是主进程和渲染进程中间桥梁的一个文件夹,默认情况下,构建输出将放置在out(相对于项目根目录)。

├──out/
│  ├──main
│  ├──preload
│  └──renderer
└──...

当然也可以通过命令行来重新指定它,例如 electron-vite dev/build/preview --outDir=dist:

resources:用于放置一些静态文件,像桌面端的应用图标就是该目录下的静态文件:

src:用于存放真正的项目代码的文件,区别于以前的vite项目,该文件夹下存放有三个文件,分别代表着主进程、预加载脚本、渲染进程这三个文件,如下所示:

electron.vite.config.ts:相当于我们vite项目里面的vite.config.ts配置文件,

import { resolve } from 'path'
import { defineConfig, externalizeDepsPlugin } from 'electron-vite'
import vue from '@vitejs/plugin-vue'

export default defineConfig({
  main: {
    plugins: [externalizeDepsPlugin()]
  },
  preload: {
    plugins: [externalizeDepsPlugin()]
  },
  renderer: {
    resolve: {
      alias: {
        '@renderer': resolve('src/renderer/src')
      }
    },
    plugins: [vue()]
  }
})

路由配置管理

对于桌面端应用来说,用户也是需要进行不同界面的跳转的,这里就需要我们配置一下路由进行页面的跳转,如果想更加深入了解vue3路由知识,推荐参考我之前的文章:地址 ,终端执行如下命令进行安装路由:

npm install vue-router

安装完路由包之后,接下来我们要先创建路由组件,我们需要在渲染进程下的src目录下新建views文件,再创建3个路由组件进行测试:

创建完路由组件之后,接下来开始进行相关router配置,我们需要在渲染进程renderer文件夹下的src文件夹下新建router文件,如下:

// 通过vue-router插件实现模板路由配置
import { createRouter, createWebHistory } from 'vue-router'
import { constantRoute } from './routes'
 
// 创建路由器
const router = createRouter({
  // 路由模式
  history: createWebHistory(),
  routes: constantRoute,
  // 滚动行为
  scrollBehavior() {
    return {
      left: 0,
      top: 0,
    }
  },
})
export default router

这里我单独将routes的属性对象抽离出一个ts文件出来 ,便于后期的维护,代码如下:

// 对外暴露路由(常量路由)
export const constantRoute = [
    {
        path: '/login',
        name: 'login', // 命名路由
        component: () => import('@renderer/views/login/index.vue'),
        meta: {
            title: '登录页面',
        },
    },
    {
        path: '/',
        name: 'home',
        component: () => import('@renderer/views/home/index.vue'),
        meta: {
            title: '后台页面',
        },
    },
    {
        path: '/404',
        name: '404',
        component: () => import('@renderer/views/404/index.vue'),
        meta: {
            title: '404界面',
        },
    },
    {
        path: '/:pathMatch(.*)*',
        name: 'any',
        redirect: '/404',
    },
]

接下来在入口文件 main.ts 处进行路由router的挂载:

如果想把写好的路由进行展示的话,需要通过 router-view 作为路由出口,路由匹配到的组件将进行响应的渲染,这里在App根组件上进行展示,通过 router-link 来进行路由的跳转,如下:

<template>
  <div class="container">
    <router-link to="/login">登录</router-link> &nbsp;
    <router-link to="/">首页</router-link> &nbsp;
    <router-link to="/ab1212out">随便乱输入</router-link>
    <router-view></router-view>
  </div>
</template>

最终呈现的效果如下所示:

公共仓库配置

对于桌面端应用来说,用户可能也是需要进行登录注册的,这里我们就需要通过仓库对用户的信息进行一个存储供全局进行使用,这里的话我们就使用pinia仓库管理工具进行使用,不了解pinia的朋友,推荐看一下我之前讲解的文章:地址 ,本文就不再着重讲解其具体知识。

因为仓库一般也是需要进行持久化管理的,这里顺便把pinia持久化插件也进行安装,这里我们借助pinia的一个持久化存储插件 pinia-plugin-persistedstate ,其运行机制就是,在设置state的时候会自动把数据同步给localstorage,在获取state数据的时候会优先从localStorage中取,终端执行如下命令进行安装pinia:

npm install pinia pinia-plugin-persistedstate

安装完pinia和持久化插件之后,我们需要对其进行一个注册, 在src目录下新建store文件夹,文件夹下新建 index.ts 文件,暴露如下代码:

// 设置pinia仓库
import { createPinia } from 'pinia'
import piniaPluginPersistedstate from 'pinia-plugin-persistedstate'
 
const pinia = createPinia()
// 注册持久化插件
pinia.use(piniaPluginPersistedstate)
// 对外暴露:入口文件需要安装仓库
export default pinia

创建完仓库代码之后,需要在main.ts入口文件出进行pinia的挂载:

import { createApp } from 'vue'
import App from './App.vue'
// 导入路由组件
import router from './router'
// 导入仓库
import pinia from './store'


createApp(App)
    .use(router) // 注册路由
    .use(pinia) // 安装仓库
    .mount('#app')

接下来在store中新建文件夹modules用于存储仓库文件,在该文件夹创建一个login.js文件,用来存储登录相关数据,这里采用组合式API的写法,如下案例:

// 登录模块仓库
import { defineStore } from "pinia";
import { ref } from "vue"
 
export const useMemberStore = defineStore("login", () => {
    const profile = ref();
    const setProfile = (val: number) => {
        profile.value = val;
    }
    const clearProfile = () => {
        profile.value = undefined
    }
    return { profile, setProfile, clearProfile }
}, { persist: true }) // 开启持久化

后面基本上就是纯vite-vue的项目配置开发了,这里不再赘述,详情请参考我之前的文章:地址 ,这篇文章里面的项目创建的基础配置还是比较全面的,大家可以去了解一下。

  • 30
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
### 回答1: 问题描述:使用vite npm run electron:serve命令运行Electron应用始终无法成功。 解决办法可能有以下几种: 1. 检查依赖项:首先确保已经安装了所有必要的依赖项。可以使用命令npm install来安装所需的依赖。 2. 检查Electron版本:请确保所使用的Electron版本与项目所需的版本兼容。可以在package.json文件中查看所需的Electron版本,并使用命令npm ls electron来检查当前安装的版本。 3. 检查配置文件:查看项目根目录中的vite.config.js文件,确保其中的配置正确无误。特别注意文件中的target字段,确认是否设置为electron-renderer。 4. 检查启动脚本:打开package.json文件,找到scripts字段下的electron:serve命令,并检查其内容是否正确。确保命令中的文件路径正确,没有拼写错误,并且引入了所需的模块。 5. 检查系统环境:确保已经正确安装了Electron所需的系统环境。请参考Electron官方文档,查看所需的系统环境及其配置方法。 6. 清除缓存:有时候,项目中可能存在一些缓存文件或冲突,可以尝试使用命令npm run clean来清除所有缓存文件,然后再重新运行npm run electron:serve命令。 如果以上方法无法解决问题,请尝试搜索相关错误信息或在相关论坛或社区提问以获取更多帮助。 ### 回答2: 对于"vite npm run electron:serve"无法正常运行的问题,可能有以下几种可能性和解决方法: 1. 确保依赖安装完整:首先,你需要确认项目的依赖安装完整。使用npm或者yarn命令,可以尝试运行"npm install"或"yarn install"来安装项目依赖。 2. 检查Electron版本和配置:确保你安装的Electron版本是与项目兼容的版本,并且相关的配置文件(例如main.js或electron-main.ts)是否正确配置。你可以检查项目的package.json文件中的相关配置信息。 3. 检查运行命令:确认"npm run electron:serve"命令是否正确,也可以尝试在命令行中直接运行"electron ./"查看是否可以正常启动Electron应用程序。 4. 检查报错信息:如果命令运行时出现错误信息,可以尝试查看报错信息,通常报错信息会提示错误的具体原因,根据错误信息尝试解决问题。你可以查看终端输出或者浏览器控制台输出以获取更多详细信息。 5. 清除缓存和重新构建:在尝试解决问题时,可以尝试清除缓存并重新构建应用程序。使用"npm run clean"或"yarn clean"清除缓存,并再次运行"npm run electron:serve"命令重新构建应用程序。 如果以上方法仍然无法解决问题,建议检查相关文档、社区论坛或者开发者问答平台是否有类似问题和解决方法,或者考虑向开发者社区提问以获取更详细的帮助和指导。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

亦世凡华、

你的鼓励是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值