整合vite5.x+electron31+pinia2+vue-i18n+echarts全新后台管理方案Vue3ElectronAdmin。提供了4种通用布局模板,支持中英文/繁体国际化解决方案、动态路由权限,实现了表格、表单、列表、图表、编辑器、错误处理等模块。
原创Electron31+Vue3+ElementPlus桌面端后台管理系统
  
  
技术栈
- 编辑器:vscode
 - 框架技术:vite^5.3.4+vue^3.4.31+vue-router^4.4.0
 - 跨端框架:electron^31.3.0
 - 组件库:element-plus^2.7.8
 - 状态管理:pinia^2.2.0
 - 国际化方案:vue-i18n@9
 - 图表组件:echarts^5.5.1
 - markdown编辑器:md-editor-v3^4.18.0
 - 模拟数据:mockjs^1.1.0
 - 打包工具:electron-builder^24.13.3
 - electron+vite桥接插件:vite-plugin-electron^0.28.7
 
  
  
  
功能性
1、最新前端技术栈Vite5.x、Vue3、Electron31、ElementPlus、Vue-I18n、Echarts
2、支持中英文/繁体国际化解决方案
3、支持动态权限路由、多页签缓存路由
4、封装多窗口管理器
5、内置4种通用布局模板、自由切换风格
6、整合通用的表格、表单、列表、图表、编辑器、错误处理等模块
7、高颜值UI界面、轻量级模块化、高定制性  
  
项目结构
整个项目整合vite.js+electronjs跨平台技术,采用vue3 setup语法编码。  
  
  
electronjs主线程配置
/**  
 * 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()  
})
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
  
electron31-vue3-admin布局模板
  
  
/**  
 * 通用布局模板  
 * @author Andy  
*/  
<script setup>  
  import { appState } from '@/pinia/modules/app'  
  // 引入布局模板  
  import Classic from './template/classic/index.vue'  
  import Columns from './template/columns/index.vue'  
  import Vertical from './template/vertical/index.vue'  
  import Horizontal from './template/horizontal/index.vue'  
  const appstate = appState()  
  const LayoutMap = {  
    'classic': Classic,  
    'columns': Columns,  
    'vertical': Vertical,  
    'horizontal': Horizontal  
  }  
</script>  
<template>  
  <div class="vuadmin__container" :style="{'--themeSkin': appstate.config.skin}">  
    <component :is="LayoutMap[appstate.config.layout]" />  
  </div>  
</template>
electron31-admin国际化配置
  
  
/**  
 * 国际化配置  
 * @author YXY  
 */  
import { createI18n } from 'vue-i18n'  
import { appState } from '@/pinia/modules/app'  
// 引入语言配置  
import enUS from './en-US'  
import zhCN from './zh-CN'  
import zhTW from './zh-TW'  
// 默认语言  
export const langVal = 'zh-CN'  
export default async (app) => {  
  const appstate = appState()  
  const lang = appstate.lang || langVal  
  appstate.setLang(lang)  
  const i18n = createI18n({  
    legacy: false,  
    locale: lang,  
    messages: {  
      'en': enUS,  
      'zh-CN': zhCN,  
      'zh-TW': zhTW  
    }  
  })  
  app.use(i18n)  
}
vue3封装echarts图表hook
  
  
/**  
 * 动态图表Hook  
 */  
import { onMounted, onBeforeUnmount, ref } from 'vue'  
import * as echarts from 'echarts'  
import elementResizeDetectorMaker from 'element-resize-detector'  
export function useEcharts(el, options) {  
  let chartEl  
  let chartRef = ref(null)  
  let erd = elementResizeDetectorMaker()  
  const resizeHandle = () => {  
    chartEl && chartEl.resize()  
  }  
  onMounted(() => {  
    if(el?.value) {  
      chartEl = echarts.init(el.value)  
      chartEl.setOption(options)  
      chartRef.value = chartEl  
    }  
    erd.listenTo(el.value, resizeHandle)  
  })  
  onBeforeUnmount(() => {  
    chartEl.dispose()  
    erd.removeListener(el.value, resizeHandle)  
  })  
  return chartRef  
}
OK,以上就是Electron31+Vue3+ElementPlus跨平台实战开发后台管理系统的一些分享。整个项目涉及到的知识点还是蛮多的,限于篇幅就暂时分享到这里。希望对大家有所帮助哈~
作者:xiaoyan2017
链接: https://segmentfault.com/a/1190000045186093
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。  
            
            
            
            
0 个评论
要回复文章请先登录或注册