📢 新文章推送 · 每周更新优质内容 · 订阅更新 →
向下滚动
开发编程

Lumin Admin 应用市场:发现和安装优质应用

AI 智能总结

Lumin Admin 应用市场:发现和安装优质应用

📌 概述

应用市场是 Lumin Admin 的扩展功能入口,提供精选应用的发现和安装服务。与插件系统不同,应用市场展示的是更完整的功能模块,安装后会在插件列表中出现。

本功能当前为展示型实现,应用数据内置在后端,后续可扩展为远程仓库加载。

一、应用分类

分类Key中文说明
外观appearance外观主题和视觉相关
统计analytics统计数据分析相关
功能feature功能核心功能增强
互动engagement互动用户互动相关
内容content内容内容管理增强
媒体media媒体媒体文件相关

二、精选应用列表

应用 ID名称版本评分下载量分类大小
lumin-dark-mode暗黑模式1.2.04.81.3k外观12 KB
lumin-analytics访问统计2.0.14.6960统计28 KB
lumin-search全文搜索1.5.04.7840功能45 KB
lumin-i18n国际化1.0.04.3520功能18 KB
lumin-newsletter邮件订阅1.1.04.2380互动22 KB
lumin-watermark图片水印1.0.24.5650媒体15 KB
lumin-table-of-contents文章目录1.3.04.91.1k内容8 KB
lumin-code-copy代码复制1.1.04.7920内容5 KB
lumin-reading-time阅读时间1.0.04.4470内容3 KB
lumin-social-share社交分享1.2.04.5780互动16 KB

三、后端实现

3.1 应用数据定义

 1const MARKETPLACE_APPS = [
 2  {
 3    id: 'lumin-dark-mode',
 4    name: '暗黑模式',
 5    desc: '为博客添加暗黑模式切换功能,自动跟随系统偏好',
 6    icon: 'Moon',
 7    version: '1.2.0',
 8    author: 'Lumin Team',
 9    downloads: 1280,
10    rating: 4.8,
11    category: 'appearance',
12    tags: ['主题', '暗黑'],
13    size: '12 KB'
14  },
15  // ... 其他应用
16]

3.2 API 接口

 1// 获取应用列表(支持分类筛选和搜索)
 2app.get('/api/marketplace', (req, res) => {
 3  let apps = [...MARKETPLACE_APPS]
 4
 5  if (req.query.category && req.query.category !== 'all') {
 6    apps = apps.filter(a => a.category === req.query.category)
 7  }
 8
 9  if (req.query.search) {
10    const s = req.query.search.toLowerCase()
11    apps = apps.filter(a =>
12      a.name.toLowerCase().includes(s) ||
13      a.desc.toLowerCase().includes(s) ||
14      a.tags.some(t => t.includes(s))
15    )
16  }
17
18  const categories = [...new Set(MARKETPLACE_APPS.map(a => a.category))]
19  ok(res, { apps, categories })
20})
21
22// 获取单个应用详情
23app.get('/api/marketplace/:id', (req, res) => {
24  const app = MARKETPLACE_APPS.find(a => a.id === req.params.id)
25  if (!app) return fail(res, 404, 'App not found')
26  ok(res, app)
27})

3.3 搜索功能

搜索支持三个维度的匹配:

维度说明示例
名称应用名称搜索「搜索」→ 全文搜索
描述应用描述搜索「水印」→ 图片水印
标签应用标签搜索「分享」→ 社交分享

四、前端实现

4.1 应用卡片

每个应用以卡片形式展示,包含:

  • 分类图标:不同分类使用不同渐变色
  • 应用名称和作者
  • 文件大小标签
  • 应用描述
  • 标签列表
  • 底部统计:下载量、评分、版本号
  • 安装按钮
1.app-icon {
2  &.icon--appearance { background: linear-gradient(135deg, #8950fc, #7c3aed); }
3  &.icon--analytics { background: linear-gradient(135deg, #3699ff, #1e90ff); }
4  &.icon--feature { background: linear-gradient(135deg, #0bb783, #4caf50); }
5  &.icon--engagement { background: linear-gradient(135deg, #f64e60, #e91e63); }
6  &.icon--content { background: linear-gradient(135deg, #ffa800, #ff9800); }
7  &.icon--media { background: linear-gradient(135deg, #00bcd4, #0097a7); }
8}

4.2 分类筛选

1<el-radio-group v-model="categoryFilter" @change="loadApps">
2  <el-radio-button value="all">全部</el-radio-button>
3  <el-radio-button v-for="cat in categories" :key="cat" :value="cat">
4    {{ categoryLabels[cat] || cat }}
5  </el-radio-button>
6</el-radio-group>

4.3 下载量格式化

1function formatNumber(num) {
2  if (num >= 1000) return (num / 1000).toFixed(1) + 'k'
3  return num
4}

4.4 安装流程

当前安装为模拟操作,安装后提示用户到插件页面管理:

1function installApp(app) {
2  ElMessage.success(`${app.name} 安装成功!可在「插件」页面管理`)
3}

五、与插件系统的关系

1应用市场                     插件管理
2┌─────────────────┐      ┌─────────────────┐
3│ 发现新应用       │      │ 管理已安装插件   │
4│ 查看评分/下载量  │ ───→ │ 启用/禁用        │
5│ 一键安装         │      │ 卸载             │
6└─────────────────┘      └─────────────────┘

应用市场安装的应用会出现在插件列表中,由插件系统统一管理启用/禁用状态。

六、后续规划

  • 远程仓库:从 GitHub 仓库加载应用列表
  • 版本更新:检测已安装应用的更新
  • 应用详情页:展示完整的更新日志和截图
  • 用户评价:支持用户评分和评论
  • 安装进度:显示下载和安装进度

七、文件变更清单

文件变更
admin/backend/server.js新增 2 个应用市场 API
admin/frontend/src/views/Marketplace/Index.vue新建应用市场页面
admin/frontend/src/api/index.js新增 2 个应用市场 API 函数
admin/frontend/src/router/index.js/marketplace 路由从 Placeholder 改为真实页面
版权声明

本文作者 Lumin

本文链接 https://www.zhengquan.xyz/code/lumin-admin-marketplace/

许可协议 本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明出处!

请作者喝杯咖啡 ☕

  • 微信打赏
    微信支付
  • 支付宝打赏
    支付宝
点击按钮查看打赏二维码
🎁 推荐工具
试试这些实用在线工具,提升工作效率
前往工具集 →

留言评论

期待你的想法

评论加载中