CoreUI-Free-Bootstrap-Admin-Template与Electron集成:桌面应用开发

【免费下载链接】coreui-free-bootstrap-admin-template coreui/coreui-free-bootstrap-admin-template: CoreUI-Free-Bootstrap-Admin-Template 是一套免费的Bootstrap 4/5管理模板,包含了多种预设页面、UI组件和图表插件,适合快速开发企业级后台管理系统。 【免费下载链接】coreui-free-bootstrap-admin-template 项目地址: https://gitcode.com/gh_mirrors/co/coreui-free-bootstrap-admin-template

你是否正在寻找一种快速构建企业级桌面管理应用的方案?CoreUI-Free-Bootstrap-Admin-Template(以下简称CoreUI模板)作为基于Bootstrap的优秀前端框架,结合Electron这一跨平台桌面应用开发工具,可以让你在保留Web开发效率的同时,拥有原生桌面应用的体验。本文将带你从零开始,完成从环境搭建到应用打包的全过程,最终获得一个功能完善的桌面管理系统。

准备工作:环境与工具

在开始集成前,需要确保开发环境中已安装Node.js(建议v16+)和npm。通过以下命令克隆项目仓库并安装依赖:

git clone https://gitcode.com/gh_mirrors/co/coreui-free-bootstrap-admin-template
cd coreui-free-bootstrap-admin-template
npm install

项目核心配置文件package.json中已包含完整的构建脚本,可通过npm start启动Web开发服务器,验证前端功能是否正常。CoreUI模板的主要资源文件位于src/目录下,包括:

CoreUI模板目录结构

第一步:Electron基础配置

安装Electron依赖

在项目根目录执行以下命令,安装Electron核心依赖:

npm install electron electron-builder --save-dev

创建Electron入口文件

在项目根目录新建electron-main.js文件,作为Electron应用的主进程:

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

function createWindow() {
  // 创建浏览器窗口
  const mainWindow = new BrowserWindow({
    width: 1200,
    height: 800,
    webPreferences: {
      nodeIntegration: false, // 禁用Node.js集成
      contextIsolation: true, // 启用上下文隔离
      preload: path.join(__dirname, 'electron-preload.js') // 预加载脚本路径
    }
  });

  // 加载CoreUI模板的编译输出目录
  mainWindow.loadFile(path.join(__dirname, 'dist/index.html'));
  
  // 打开开发者工具(开发阶段)
  mainWindow.webContents.openDevTools();
}

// 应用就绪后创建窗口
app.whenReady().then(() => {
  createWindow();
  
  app.on('activate', () => {
    if (BrowserWindow.getAllWindows().length === 0) createWindow();
  });
});

// 所有窗口关闭时退出应用
app.on('window-all-closed', () => {
  if (process.platform !== 'darwin') app.quit();
});

添加预加载脚本

创建electron-preload.js文件,作为渲染进程与主进程通信的桥梁:

// 暴露Electron API到渲染进程(按需添加)
window.addEventListener('DOMContentLoaded', () => {
  const replaceText = (selector, text) => {
    const element = document.getElementById(selector);
    if (element) element.innerText = text;
  };

  for (const type of ['chrome', 'node', 'electron']) {
    replaceText(`${type}-version`, process.versions[type]);
  }
});

第二步:项目构建流程整合

修改package.json配置

更新package.json文件,添加Electron相关脚本和配置:

{
  "main": "electron-main.js",
  "scripts": {
    "electron:serve": "npm run build && electron .",
    "electron:build": "npm run build && electron-builder"
  },
  "build": {
    "appId": "com.coreui.adminapp",
    "productName": "CoreUI Admin Desktop",
    "files": [
      "dist/**/*",
      "electron-main.js",
      "electron-preload.js"
    ],
    "win": {
      "target": "nsis",
      "icon": "src/assets/favicon.ico"
    },
    "mac": {
      "target": "dmg"
    },
    "linux": {
      "target": "deb"
    }
  }
}

关键配置说明:

  • files:指定需要打包的文件,包含CoreUI模板的编译输出(dist/目录)和Electron入口文件
  • target:指定各平台的打包格式(Windows: nsis, macOS: dmg, Linux: deb)
  • icon:应用图标,使用项目现有资源src/assets/favicon.ico

调整前端页面适配

CoreUI模板的HTML文件默认使用相对路径引用资源,需要确保所有页面中的<base>标签正确配置。以src/views/index.html为例,修改<head>部分:

<head>
  <meta charset="utf-8">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <base href="./"> <!-- 确保相对路径正确解析 -->
  <title>CoreUI Dashboard</title>
  <!-- 其他资源引用 -->
</head>

所有HTML文件的<body>标签需添加electron-app类,便于针对性调整样式:

<body class="c-app electron-app">
  <!-- 页面内容 -->
</body>

CoreUI仪表盘界面

第三步:功能增强与原生能力集成

菜单与托盘功能

在electron-main.js中添加自定义菜单和系统托盘支持:

const { Menu, Tray } = require('electron');
let tray = null;

app.whenReady().then(() => {
  // 创建系统托盘
  tray = new Tray(path.join(__dirname, 'src/assets/favicon.ico'));
  const contextMenu = Menu.buildFromTemplate([
    { label: '显示主窗口', click: () => mainWindow.show() },
    { label: '退出', click: () => app.quit() }
  ]);
  tray.setToolTip('CoreUI Admin');
  tray.setContextMenu(contextMenu);

  // 创建应用菜单
  const menuTemplate = [
    {
      label: '文件',
      submenu: [
        { label: '刷新', click: () => mainWindow.reload() },
        { type: 'separator' },
        { label: '退出', click: () => app.quit() }
      ]
    },
    {
      label: '视图',
      submenu: [
        { label: '开发者工具', click: () => mainWindow.webContents.openDevTools() }
      ]
    }
  ];
  const menu = Menu.buildFromTemplate(menuTemplate);
  Menu.setApplicationMenu(menu);
});

数据持久化方案

使用Electron的electron-store模块实现本地数据存储:

npm install electron-store --save

创建数据存储服务src/js/electron-store.js:

const Store = require('electron-store');

class AppStore {
  constructor() {
    this.store = new Store();
  }

  saveUserPreferences(prefs) {
    this.store.set('userPreferences', prefs);
  }

  getUserPreferences() {
    return this.store.get('userPreferences', { theme: 'light', sidebar: 'expanded' });
  }
}

// 在渲染进程中通过window.appStore访问
window.appStore = new AppStore();

在预加载脚本electron-preload.js中暴露该模块:

const { contextBridge } = require('electron');
const Store = require('electron-store');

const store = new Store();

contextBridge.exposeInMainWorld('electronStore', {
  get: (key) => store.get(key),
  set: (key, value) => store.set(key, value),
  delete: (key) => store.delete(key)
});

第四步:应用打包与分发

编译前端资源

执行CoreUI模板的构建命令,生成优化后的前端资源:

npm run build

构建产物将输出到dist/目录,包含所有HTML页面、CSS/JS文件和静态资源。

打包桌面应用

根据目标平台执行打包命令:

# Windows平台
npm run electron:build -- --win

# macOS平台
npm run electron:build -- --mac

# Linux平台
npm run electron:build -- --linux

打包完成后,安装包将生成在dist_electron/目录下。以Windows平台为例,会生成CoreUI Admin Desktop Setup x.y.z.exe安装程序。

自动化构建配置

在package.json中添加跨平台打包脚本:

"scripts": {
  "electron:build:all": "npm run build && electron-builder --win --mac --linux"
}

执行npm run electron:build:all即可同时构建三个平台的安装包。

常见问题与解决方案

资源路径问题

症状:Electron窗口中图片、样式加载失败
解决:确保HTML文件中使用相对路径,或通过__dirname构造绝对路径:

// 在electron-main.js中加载页面
mainWindow.loadFile(path.join(__dirname, 'dist/index.html'));

跨域限制问题

症状:AJAX请求失败,控制台提示CORS错误
解决:在主进程中禁用Web安全检查(仅开发环境):

new BrowserWindow({
  webPreferences: {
    webSecurity: false // 生产环境不建议使用
  }
});

窗口大小适配

症状:页面元素显示异常,布局错乱
解决:在src/scss/style.scss中添加Electron环境专属样式:

body.electron-app {
  height: 100vh;
  overflow: hidden;
  
  .c-wrapper {
    height: 100%;
    overflow-y: auto;
  }
}

结语与扩展方向

通过本文介绍的方法,我们成功将CoreUI模板转换为功能完善的桌面应用。这一方案保留了Web开发的高效性,同时获得了桌面应用的离线运行、系统集成等能力。后续可进一步探索:

  • 自动更新:集成electron-updater实现应用自动更新
  • 系统通知:使用Electron的NotificationAPI实现桌面通知
  • 硬件访问:通过Node.js模块访问串口、USB等硬件设备

完整项目代码结构可参考README.md,更多UI组件示例可查看src/views/widgets.html和src/views/charts.html。

希望本文能帮助你快速构建企业级桌面管理应用,如有任何问题,欢迎通过项目Issue系统反馈。

【免费下载链接】coreui-free-bootstrap-admin-template coreui/coreui-free-bootstrap-admin-template: CoreUI-Free-Bootstrap-Admin-Template 是一套免费的Bootstrap 4/5管理模板,包含了多种预设页面、UI组件和图表插件,适合快速开发企业级后台管理系统。 【免费下载链接】coreui-free-bootstrap-admin-template 项目地址: https://gitcode.com/gh_mirrors/co/coreui-free-bootstrap-admin-template

Logo

开源鸿蒙跨平台开发社区汇聚开发者与厂商,共建“一次开发,多端部署”的开源生态,致力于降低跨端开发门槛,推动万物智联创新。

更多推荐