更新记录
1.0.0(2026-09-22) 下载此版本
初次提交
平台兼容性
uni-app(3.8.4)
| Vue2 | Vue3 | Chrome | Safari | app-vue | app-nvue | Android | iOS | 鸿蒙 |
|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ |
| 微信小程序 | 支付宝小程序 | 抖音小程序 | 百度小程序 | 快手小程序 | 京东小程序 | 鸿蒙元服务 | QQ小程序 | 飞书小程序 | 小红书小程序 | 快应用-华为 | 快应用-联盟 |
|---|---|---|---|---|---|---|---|---|---|---|---|
| √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ | √ |
uni-app x(3.8.6)
| Chrome | Safari | Android | iOS | 鸿蒙 | 微信小程序 |
|---|---|---|---|---|---|
| - | - | - | - | - | - |
u-cms
uni-admin 内容管理模块。当前内置两类内容管理能力:
- 内容标签(tag)
- 小说管理(novel + chapter)
本模块遵循 uni_modules 自包含原则:页面、组件、数据库 schema、云函数全部收在模块目录内,可整体复制到任意 uni-admin 项目复用,不依赖项目根的 uniCloud-aliyun/ 中除基座(opendb-/uni-id-)以外的文件。
目录结构
u-cms/
├── changelog.md
├── components/u-cms/ # 模块入口组件
├── pages/
│ ├── tag/ # 内容标签 CRUD(list / add / edit)
│ └── novel/ # 小说 CRUD(list / add / edit)
│ └── chapter/ # 章节 CRUD(list / add / edit),按 book_id 过滤
├── uniCloud/ # ← 模块自带的云端能力
│ ├── database/ # 集合 schema + 初始化数据 + 索引
│ │ ├── cms-tag.schema.json / cms-tag.init_data.json / cms-tag.index.json
│ │ ├── cms-novel.schema.json / cms-novel.init_data.json
│ │ └── cms-novel-chapter.schema.json / cms-novel-chapter.init_data.json
│ └── cloudfunctions/
│ ├── cms-novel-publish/ # 发布:把小说 + 已发布章节序列化为 JSON 上传云存储
│ └── cms-novel-api/ # 微信同构内部 API(作品 / 章节 / 审核 / 预览)
├── js_sdk/ # 校验器 + 客户端 SDK(随模块自包含)
├── package.json
└── readme.md
模块内 js_sdk(随模块自包含)
校验器与客户端 SDK 已随本模块自包含,页面以相对路径 ../../js_sdk/... 引用:
- 校验器:
js_sdk/validator/cms-tag.js、js_sdk/validator/cms-novel.js、js_sdk/validator/cms-novel-chapter.js - 客户端 SDK:
js_sdk/cms-novel-publish.js(发布)、js_sdk/cms-novel-api.js(微信同构 API 客户端封装) - 菜单种子:项目
uniCloud-aliyun/database/opendb-admin-menus.init_data.json(见下方「菜单注册」——属跨模块 admin 配置,不随模块迁移)
部署步骤
- 数据库 schema / 索引 / 初始化数据:在 HBuilderX 中右键
u-cms/uniCloud/database/→ 「上传数据库 schema 及索引」与「上传初始化数据」(也可逐个文件上传)。 - 云函数:分别右键
cms-novel-publish、cms-novel-api→ 「上传部署」。 - cms-novel-api 鉴权:写类 action 需
apiKey一致。配置优先级:uniCloud/cloudfunctions/cms-novel-api/config.json(已随模块自带,默认apiKey: "REPLACE_WITH_YOUR_API_KEY",生产务必替换)> 宿主项目uni-config-center的cms-novel-api插件配置(可选,集中管理多插件时使用)。设置requireAuth: false可关闭写类鉴权。
菜单注册
模块页面要在管理端侧栏可见,需在「菜单管理」手动添加(或重跑「初始化云数据库」覆盖):
| 名称 | URL | 父级 |
|---|---|---|
| 内容标签 | /uni_modules/u-cms/pages/tag/list |
内容管理 |
| 小说管理 | /uni_modules/u-cms/pages/novel/list |
内容管理 |
首页卡片「小说管理」入口已在宿主项目
pages/index/index.vue预置。
页面与字段
内容标签 tag
标准 CRUD,列表支持按名称搜索,详情见 pages/tag/。
小说 novel / chapter
- novel 字段:
title/author/category/cover/intro/status(0 草稿 / 1 连载中 / 2 已完结 / 3 下架) /isVip/wordCount/sort/publishFileId/publishUrl/publishTime/publishChapterCount/publishWordCount - chapter 字段:
book_id/title/index/seq/content/wordCount/isVip/status(0 草稿 / 1 已发布) /audit_status/ban_status - 删除小说会级联删除其全部章节(
dbCmd.in(ids))。 - 章节
book_id等隐藏外键在提交时手动合并进 payload(uni-forms.validate()不含未渲染的表单项)。
发布链路(草稿在库,发布读 JSON)
设计原则:草稿留在数据库编辑,对外消费端直接读静态 JSON 文件,不查库。
- 编辑页保存时,若
status ∈ {1 连载中, 2 已完结}(公开态)自动调用cms-novel-publish导出 JSON;列表行内「发布」按钮与编辑页「重新发布」按钮可随时手动覆盖。 -
cms-novel-publish读取小说 + 已发布章节(status=1,按index升序),按书分目录上传:cms/novel/{bookId}/ novel.json ← 书籍元信息 + 章节索引(含每章 file 路径与 fileID) chapters/{chapterId}.json ← 单章正文回写小说
publishFileId(= novel.json 的 fileID)/publishUrl/publishTime/publishChapterCount/publishWordCount。采用「按书分目录 + 单章单文件」而非「整本书一个 JSON」:长篇小说几百上千章,整本单文件会非常大,每次进书都要拉全量;分章后消费端按需拉取当前章,CDN/浏览器可逐章缓存,改一章也只需重写该章文件。短内容(文章/短剧)才适合单文件。
- 消费端读取:
- 用
publishFileId经uniCloud.getTempFileURL({ fileList: [fileID] })取novel.json临时直链(或存储桶设为公开读后直接拼直链),fetch得到书籍元信息与章节索引; - 从章节索引里拿到目标章的
fileID,再getTempFileURL+fetch拉取该章正文。getTempFileURL直链会过期;要永久直链就把云存储桶设为公开读。
- 用
- 发布没生效的常见原因:① 云函数未上传部署——右键
cms-novel-publish→ 上传部署,并确认与项目关联同一 uniCloud 空间;② HBuilderX 仅「运行」不会自动部署云函数。前端点击发布若报错,弹窗会显示真实原因(含「未部署」提示)。
cms-novel-api(微信同构内部接口)
完整接口清单见 uniCloud/cloudfunctions/cms-novel-api/readme.md。
- 调用:
uniCloud.callFunction({ name: 'cms-novel-api', data: { action, apiKey?, ... } }) - 统一返回:
{ code: 0, msg: 'ok', data };失败code !== 0(附msg);鉴权失败code: 401 - 编辑版 vs 发布版:
getBook/listBook/listChapter用version='edited'(全量含草稿)或'published'(仅status=1章节,即发布版快照)。 - 审核生命周期:
auditBook(audit_status=1) →approveBook(调 publish 生成快照, audit_status=2, publish_version+1) /rejectBook(audit_status=3)。 - 客户端封装:
js_sdk/cms-novel-api.js(已随模块自包含)提供callNovelApi(action, params, opts)。
约定与注意事项
- 集合统一以
cms-命名;schema 字段变更后需重新上传 schema。 - 云函数新增 / 变更后必须重新上传部署,前端改完 HBuilderX 重新运行。
- 本模块不依赖 uniCloud 公共模块以外的项目文件;如需复用,连同
js_sdk下对应校验器与 SDK 一起拷贝。

收藏人数:
下载插件并导入HBuilderX
赞赏(0)
下载 170
赞赏 0
下载 12629986
赞赏 1950
赞赏
京公网安备:11010802035340号