首页
学习
活动
专区
圈层
工具
发布
社区首页 >专栏 >新项目完结!Electron41+React19+Antd桌面版后台管理Exe系统

新项目完结!Electron41+React19+Antd桌面版后台管理Exe系统

原创
作者头像
andy2018
发布2026-09-10 10:12:21
发布2026-09-10 10:12:21
110
举报
文章被收录于专栏:h5h5

经过一周爆肝研发,又一个原创新项目完结~ 2026年9月实战跨平台electron41+react19.2+ant-design客户端通用中后台前端admin管理系统ElectronReacAdmin

项目技术栈

  • 开发工具:VScode
  • 跨平台框架:Electron^41.1.0
  • 技术框架:react^19.2.8+react-router-dom^7.18.2
  • 前端构建工具:vite^8.2.2
  • 组件库:antd^6.6.3
  • 状态管理:zustand^5.0.15
  • 图表组件:echarts^6.1.0
  • 数据模拟:axios^1.20.0+mockjs^1.1.0
  • 打包工具:electron-builder^26.15.3
  • 样式管理:sass^1.104.0

项目功能特点

  1. 最新跨平台技术栈Electron41、React19、Vite8、Zustand5、AntDesign、Echarts、mockjs
  2. 支持亮色+暗黑主题界面
  3. 支持中英文/繁体三种国际化语言
  4. 支持动态路由、面包屑导航、tab标签栏路由
  5. 提供3种通用布局模板、随意变换布局风格
  6. 整合常用的图表、表格、表单、列表、编辑器、错误处理等业务模块
  7. electron41+react19封装新开多窗口管理

项目目录结构

基于最新跨平台框架Electron41搭配React19创建项目框架模板。

electron应用线程配置

代码语言:actionscript
复制
/**
 * 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()
})

项目前端入口文件

代码语言:actionscript
复制
import { createRoot } from 'react-dom/client'
import './style.scss'
import App from './App.jsx'

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

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

  createRoot(document.getElementById('root')).render(
    <App />
  )
})

App.jsx文件模板

代码语言:actionscript
复制
import { useMemo } from 'react'
import { HashRouter } from 'react-router-dom'
import { ConfigProvider, theme, App as AntApp } from 'antd'

// 引入组件语言
import enUS from 'antd/locale/en_US'
import zhCN from 'antd/locale/zh_CN'
import zhTW from 'antd/locale/zh_TW'

// antd组件默认文案是英文,修改为中文
import dayjs from 'dayjs'
import 'dayjs/locale/zh-cn'
dayjs.locale('zh-cn')

import { ipcLoaded } from '@/windows/actions'
import { appStore } from '@/store/app'

// 引入路由配置
import Router, { AuthRouter } from './router'

function App() {
  ipcLoaded()
  const { lang, config: { isDark, themeColor } } = appStore()

  const locale = useMemo(() => {
    switch(lang) {
      case 'en':
        return enUS
      case 'zh-CN':
        return zhCN
      case 'zh-TW':
        return zhTW
      default:
        return zhCN
    }
  }, [lang])
  
  return (
    <ConfigProvider
      // 国际化
      locale={locale}
      // 主题
      theme={{
        token: {
          colorPrimary: themeColor || '#1677ff',
          fontFamily: "Inter, system-ui, Avenir, Helvetica, Arial, sans-serif",
        },
        algorithm: isDark ? theme.darkAlgorithm : theme.defaultAlgorithm
      }}
    >
      <AntApp>
        <HashRouter>
          <AuthRouter>
            <Router />
          </AuthRouter>
        </HashRouter>
      </AntApp>
    </ConfigProvider>
  )
}

electron-reactadmin公共布局模板

代码语言:actionscript
复制
/**
 * 主布局模板
 * @author andy
*/

import { useMemo } from 'react'
import clsx from 'clsx'
import { appStore } from '@/store/app'

// 引入布局模板
import Columns from './template/columns'
import Vertical from './template/vertical'
import Transverse from './template/transverse'

function MainLayout() {
  const { config: { skin, layout, fullContent } } = appStore()

  // 布局模板
  const LayoutComponent = useMemo(() => {
    switch (layout) {
      case 'columns':
        return Columns
      case 'vertical':
        return Vertical
      case 'transverse':
        return Transverse
      default:
        return Columns
    }
  }, [layout])

  return (
    <div className={clsx('radmin__container', { 'is-full': fullContent })}>
      <LayoutComponent />
    </div>
  )
}

export default MainLayout

electron+react自定义无边框拖拽窗口

代码语言:actionscript
复制
function Winbtns(props) {
  const {
    color,
    // 窗口是否可以最小化
    minimizable = true,
    // 窗口是否可以最大化
    maximizable = true,
    // 窗口是否可关闭
    closable = true,
    // 设置层叠
    zIndex = 2026,
    style,
    ...rest
  } = props
  
  const { modal } = App.useApp()

  const authState = authStore()

  const [hasMaximized, setHasMaximized] = useState(false)
  const [isResizable, setIsResizable] = useState(true)
  const [isMaximizable, setIsMaximizable] = useState(true)

  useEffect(() => {
    // 用户是否可以手动调整窗口大小
    window.electron.invoke('win-isResizable').then(res => {
      setIsResizable(res)
    })

    // 窗口是否可以最大化
    window.electron.invoke('win-isMaximizable').then(res => {
      setIsMaximizable(res)
    })

    // 初始窗口是否最大化
    window.electron.invoke('win-isMaximized').then(res => {
      setHasMaximized(res)
    })

    // 实时监听窗口是否最大化
    window.electron.on('win-maximized', (e, data) => {
      setHasMaximized(data)
    })
  }, [])

  // 最小化
  const handleWinMin = () => {
    window.electron.invoke('win-min')
  }
  // 最大化/还原
  const handleWinMax2Min = () => {
    window.electron.invoke('win-toggle').then(res => {
      setHasMaximized(res)
    })
  }
  // 关闭
  const handleWinClose = () => {
    if(window.config.isMajor) {
      const m = modal.confirm({
        title: '提示',
        content: '是否最小化到托盘,不退出程序系统?',
        width: 320,
        mask: {closable: true},
        centered: true,
        zIndex: 2026,
        styles: {
          container: {
            // borderRadius: 12,
          },
          body: {
            padding: '5px 0 40px'
          }
        },
        footer: (
          <div style={{textAlign: 'right'}}>
            <Button color='default' variant='filled' shape='round' onClick={() => {
              m.destroy()
              setTimeout(() => {
                winSet('hide', window.config.id)
              }, 300)
            }}>最小化至托盘</Button>
            <Button type='primary' danger shape='round' style={{marginLeft: 10}} onClick={() => {
              authState.logout()
              winSet('close')
            }}>退出</Button>
          </div>
        )
      })
    } else {
      winSet('close', window.config.id)
    }
  }

  return (
    <>
      <div {...rest} className="ra__winbtns flexbox flex-alignc" style={{ zIndex: zIndex, ...style }}>
        <div className="ra__winbtns-actions flexbox flex-alignc ra__nodrag" style={{ color: color }}>
          {isTrue(minimizable) && <a className="wbtn min" title="最小化" onClick={handleWinMin}><i className="wicon iconfont elec-icon-min"></i></a>}
          {(isTrue(maximizable) && isResizable && isMaximizable) &&
            <a className="wbtn max" title={hasMaximized ? '向下还原' : '最大化'} onClick={handleWinMax2Min}>
              {hasMaximized ? <i className="wicon iconfont elec-icon-restore"></i> : <i className="wicon iconfont elec-icon-max"></i>}
            </a>
          }
          {isTrue(closable) && <a className="wbtn close" title="关闭" onClick={handleWinClose}><i className="wicon iconfont elec-icon-quit"></i></a>}
        </div>
      </div>
    </>
  )
}

目前electron41-react19-admin项目已经完结,感谢大家的阅读与支持~ 希望以上分享对大家有点帮助哈!

Electron-React19-WinChat聊天系统|react+electron客户端聊天程序Exe

React19+Arco+Zustand仿macOS风格webOS桌面系统

electron38-vite7-vue3os电脑端os管理系统

最新版electron38-vite7-admin电脑端中后台管理系统

Electron38+Vite7+Pinia3+ElementPlus客户端聊天程序

基于React19+Arco+Zustand5接入DeepSeek-V4网页版仿豆包/Kimi流式AI系统

Vite8.0+Vue3.5+Arco深度对接DeepSeek网页版AI智能助手

uni-app+mphtml快速集成DeepSeek-V4智能ai应用

2026原创自研React19+Vite8+ArcoDesign+Zustand中后台管理系统框架模板

升级款vite8+vue3.5+arcoDesign网页端webOS桌面框架

自研Vite8+NaiveUI+Vue3+Echarts后台管理系统

全新研发Flutter3.41桌面版OS系统

最新款flutter3.41 & dart3.11仿写抖音app

原创自研Flutter3.41+Dio+WindowManager打造桌面版AI问答系统

Flutter3.41实战AI:从零到一构建app版流式ai系统

Electron41 + Vite8打造流式输出客户端AI助手

基于tauri2.8+vite7+vue3+element-plus仿QQ/微信聊天应用

tauri2.9-vite7-vue3admin客户端后台系统管理Exe模板

最新原创uniapp-vue3-osadmin手机版后台管理系统

最新研发uniapp+vue3仿微信app聊天模板

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

目录
  • 项目技术栈
  • 项目功能特点
  • 项目目录结构
  • electron应用线程配置
  • 项目前端入口文件
  • electron-reactadmin公共布局模板
  • electron+react自定义无边框拖拽窗口
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档