electron38.2-vue3os系统|Vite7+Electron38+Pinia3+ArcoDesign桌面版OS后台管理

280 阅读2分钟

国庆期间爆肝研发,2025新款跨平台electron38+vite7客户端os管理系统完结啦~

002360截图20251010225357520.png

004360截图20251010234314484.png

electron38-vite7-os支持macOSwindows两种桌面风格模式。

002360截图20251010230146790.png

使用技术

  • 开发工具:VScode
  • 跨平台框架:electron^38.2.0
  • 前端框架:vite^7.1.7+vue^3.5.21+vue-router^4.5.1
  • 组件库:@arco-design/web-vue^2.57.0 (字节前端vue3组件库)
  • 状态管理:pinia^3.0.3
  • 拖拽插件:sortablejs^1.15.6
  • 图表组件:echarts^6.0.0
  • markdown编辑器:md-editor-v3^6.0.1
  • 模拟数据:mockjs^1.1.0
  • 打包构建:electron-builder^24.13.3
  • electron+vite结合插件:vite-plugin-electron^0.29.0

p2.gif

p3-1.gif

项目特性

  1. 基于Electron38.2封装高复用多开窗口管理
  2. 支持macOS/windows两种桌面风格模式
  3. 支持自定义json配置桌面菜单和Dock菜单
  4. 自研桌面栅格化拖拽布局引擎
  5. 自定义桌面个性化壁纸、全场景毛玻璃模糊效果
  6. 支持独立新开窗口打开路由页面

p4.gif

项目框架目录

使用最新跨平台框架electron38.2整合vite7.1构建项目框架模板。

360截图20251010223344923.png

前端项目配置main.js

import { createApp } from 'vue'
import './style.scss'
import App from './App.vue'

import { launchApp } from '@/windows/actions'

// 引入路由及状态管理
import Router from './router'
import Pinia from './pinia'

// 引入插件
import Plugins from './plugins'

launchApp().then(config => {
  if(config) {
    // 全局存储窗口配置
    window.config = config
  }

  // 初始化app实例
  createApp(App)
  .use(Router)
  .use(Pinia)
  .use(Plugins)
  .mount('#app')
})

da09759b83d16bb55c93e660172cfabd_1289798-20251011235554839-661714912.png

7e607554f342117e451061c8496fd8b1_1289798-20251011235726523-1883538312.png

electron进程配置

/**
 * electron主线程配置
 * @author andy
 */

import { app, BrowserWindow } from 'electron'

import { WindowManager } from '../src/windows/index.js'

// 忽略安全警告提示 Electron Security Warning (Insecure Content-Security-Policy)
process.env['ELECTRON_DISABLE_SECURITY_WARNINGS'] = true

const createWindow = () => {
  let win = new WindowManager()
  win.create({isMajor: true})
  // 系统托盘管理
  win.trayManager()
  // 监听ipcMain事件
  win.ipcManager()
}

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

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

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

360截图20251010215230696.png

360截图20251010221850764.png

001360截图20251010232547460.png

002360截图20251010225006016.png

002360截图20251010225202105.png

002360截图20251010233227194.png

002360截图20251010233413426.png

008360截图20251011000603301.png

桌面通用布局模板

e5e5005ded3a2333424c97790bb21140_1289798-20251012000214148-268254914.png

支持macos和windows两种桌面模式。

<!-- 桌面模板 -->

<script setup>
  import { appState } from '@/pinia/modules/app'

  // 引入布局模板
  import MacosLayout from './template/macos.vue'
  import WindowsLayout from './template/windows.vue'

  const appstate = appState()

  const DeskLayout = {
    macos: MacosLayout,
    windows: WindowsLayout
  }
</script>

<template>
  <div class="vu__container" :style="{'--themeSkin': appstate.config.skin}">
    <component :is="DeskLayout[appstate.config.layout]" />
  </div>
</template>

9d20d58adc5e2f374eb8e6f7f85359d1_1289798-20251012000635940-705630857.png

a6d74c0c6238a10df9888285b15b47eb_1289798-20251012000910641-795803037.png

<script setup>
  import Wintool from '@/layouts/components/wintool/index.vue'
  import Desk from '@/layouts/components/mac/desk.vue'
  import Dock from '@/layouts/components/mac/dock.vue'
</script>

<template>
  <div class="vu__layout flexbox flex-col">
    <div class="vu__layout-header">
      <Wintool />
    </div>
    <div class="vu__layout-body flex1 flexbox">
      <Desk />
    </div>
    <div class="vu__layout-footer">
      <Dock />
    </div>
  </div>
</template>

electron38-viteos一种探索全新的桌面OS模式通用后台管理系统新解决方案。

002360截图20251010225246752.png

003360截图20251010233604122.png

003360截图20251010233740551.png

005360截图20251010234657245.png

007360截图20251011000012782.png

007360截图20251011000225629.png

008360截图20251011000435357.png

008360截图20251011000530157.png

009360截图20251011000722805.png

009360截图20251011000855789.png

010360截图20251011001137524.png

010360截图20251011001342429.png

011360截图20251011001615754.png

013360截图20251011002036842.png

014360截图20251011002304505.png

014360截图20251011002507985.png

015360截图20251011002640539.png

016360截图20251011002744009.png

016360截图20251011002759441.png

018360截图20251011003032865.png

020360截图20251011080353733.png

020360截图20251011080936964.png

024360截图20251011091228026.png

electron38+vue3桌面栅格系统

64911f6cd4edc4ad5ac837afc01dcd8e_1289798-20251012003033421-312238492.png

2fb9664b9faedf7e850feedb654dc3b8_1289798-20251012003127193-1234414321.png

桌面栅格图标变量

const deskGridVariable = ref({
  '--icon-radius': '10px', // 圆角
  '--icon-size': '60px', // 图标尺寸
  '--icon-gap-col': '30px', // 水平间距
  '--icon-gap-row': '30px', // 垂直间距
  '--icon-labelSize': '12px', // 标签文字大小
  '--icon-labelColor': '#fff', // 标签颜色
  '--icon-fit': 'contain', // 图标自适应模式
})

桌面菜单配置参数

/**
 * Desk菜单配置参数
 * @param label 图标标题
 * @param imgico 图标(本地或网络图片) 支持ArcoDesign内置图标或自定义iconfont图标
 * @param path 跳转路由页面
 * @param link 跳转外部链接
 * @param hideLabel 是否隐藏图标标题
 * @param filter 是否禁用拖拽
 * @param background 自定义图标背景色
 * @param color 自定义图标颜色
 * @param size 栅格磁贴布局(16种) 1x1 ... 12x12
 * @param padding 内边距
 * @param onClick 点击图标回调函数
 * @param isNewin 新窗口打开路由页面
 * @param children 二级菜单
 */

1983615931023c70b976f03d8e65b86c_1289798-20251012003357277-1091735257.png

5ac0bcd9c8901cb8cd1d395ffe6c1426_1289798-20251012003417136-269376901.png

const deskMenu = [
  {
    uid: 'd137f210-507e-7e8e-1950-9deefac27e48',
    list: [
      {imgico: markRaw(Today), size: '2x2'},
      {label: '日历', imgico: markRaw(Calendar3x3), size: '3x3'},
      {label: 'Electron32', imgico: '/electron.svg', link: 'https://www.electronjs.org/'},
      // ...
    ]
  },
  {
    uid: 'g270f210-207e-6e8e-2650-9deefac27e48',
    list: [
      {label: 'Appstore', imgico: '/static/mac/appstore.png'},
      // ...
    ]
  },
  {
    uid: 't165f210-607e-4e8e-9950-9deefac27e48',
    list: [
      {label: 'Vue.js', imgico: '/vue.svg', link: 'https://vuejs.org/',},
      {label: 'Vite.js官方文档', imgico: '/vite.svg', link: 'https://vitejs.dev/',},
      // ...
    ]
  },
  {
    uid: 'u327f210-207e-1e8e-9950-9deefac27e48',
    list: [
      {label: 'Electron32', imgico: '/electron.svg', link: 'https://www.electronjs.org/'},
      {label: '首页', imgico: markRaw(IconHome), path: '/home', color: '#fff', isNewin: true},
      {label: '工作台', imgico: 'elec-icon-dotchart', path: '/home/dashboard', color: '#fff'},
      // ...
      {
        label: '用户中心',
        children: [
          {label: '主页', imgico: '/static/svg/ucenter.svg', path: '/setting'},
          {label: '用户管理', imgico: markRaw(IconUserGroup), path: '/user', color: '#fff'},
          // ...
        ]
      },
      {
        label: '设置',
        children: [
          // ...
        ]
      },
      {
        label: '收藏网址',
        children: [
          {label: 'Electron32', imgico: '/electron.svg', link: 'https://www.electronjs.org/'},
          {label: 'Vite.js', imgico: '/vite.svg',},
          // ...
        ]
      },
      {
        label: '公众号', imgico: '/static/qrimg.png', color: '#07c160',
        onClick: () => {
          Modal.info({
            // ...
          })
        }
      },
    ]
  }
]

往期推荐

2025最新款Electron38+Vite7+Vue3+ElementPlus电脑端后台系统Exe

基于electron38+vite7+vue3 setup+elementPlus电脑端仿微信/QQ聊天软件

最新版Vite7+Vue3+Pinia3+ArcoDesign网页版webos后台管理系统

基于uniapp+vue3+uvue仿抖音app短视频+聊天+直播app系统

Flutter3.x深度融合短视频+直播+聊天app实例

基于uniapp+vue3+deepseek+markdown搭建app版流式输出AI模板

vue3.5+deepseek+arco+markdown搭建web版流式输出AI模板

unios-admin手机版后台|uniapp+vue3全端admin管理系统

基于flutter3.32+window_manager仿macOS/Wins风格桌面os系统

flutter3.27+bitsdojo_window电脑端仿微信Exe应用

自研tauri2.0+vite6.x+vue3+rust+arco-design桌面版os管理系统Tauri2-ViteOS

基于uni-app+vue3+uvui跨三端仿微信app聊天模板

自研tauri2.0+vite5+vue3+element-plus电脑版exe聊天系统Vue3-Tauri2Chat