Technical Architecture

CMS页面搭建系统
架构设计

基于微模块化设计理念,融合 Vue3 CMS装修系统 + React/Vue 微模块引擎 + Node.js SSR渲染,
打造高性能、可扩展的企业级无代码页面搭建平台

4
独立工程协作
3
端设备适配
SSR
服务端渲染
可扩展微模块

系统 架构总览

四大独立工程协同运作,覆盖从内容创作、模块开发到服务端渲染的完整链路

用户层 (User Layer) 应用层 (Application Layer) 服务层 (Service Layer) 数据层 (Data Layer) CMS 装修编辑器 万象天工编辑器 C端用户浏览 官网 (静态页面) frontend (Vue3) CMS装修系统 Vite + Pinia + Element Plus frontend-react-module React 微模块工程 Webpack + React18 + TS backend-node (Koa2) 后端 API + SSR 引擎 Koa2 + JSDOM + VM2 website 官网静态页面 HTML + CSS + JS SSR 渲染引擎 JSDOM + VM2 沙箱 模板引擎 HTML模板 + 变量注入 水合引擎 Hydration 脚本生成 设备检测器 UA 解析 + 端适配 JWT 鉴权 认证 + 角色权限 MySQL 数据库 页面/用户/模块/统计 文件系统 模块JS/GZ + 上传文件 内存缓存 模块代码缓存+模板缓存 日志系统 Server + Web 日志 REST API
💻

CMS 装修系统 (Vue3)

基于 Vue3 + Vite + Pinia + Element Plus 构建的可视化页面搭建平台。支持传统楼层布局与无界自由布局两种装修模式,拖拽即可完成页面编排。

微模块工程 (React18/Vue3)

独立的 React/Vue 微模块开发工程。每个模块具备完整的 dataBatch + styleBatch 配置体系,Webpack 构建后输出标准化 UMD 产物,可独立部署。

后端服务 (Koa2 + SSR)

Node.js 服务端集成 SSR 渲染引擎、模板引擎、水合脚本生成器、JWT 鉴权、文件管理、数据统计等能力,为整个平台提供核心服务支撑。

微模块 架构设计

每个 React/Vue 模块是一个独立可运行的微单元,拥有标准化的生命周期接口和完善的配置体系

React/Vue 微模块包 packages/React-xxx/ index.ts (入口/生命周期) src/Component.tsx config/dataBatch.ts config/styleBatch.ts icon.svg skeleton.xml mock/index.ts (模拟数据) 生命周期 API createModule() render(container) update(data, style) destroy() 三端运行环境 CMS 装修端 (cms) C端用户浏览 (c) 服务端 SSR (server) 配置驱动体系 dataBatch + styleBatch dataBatch 数据配置 FImageUpload FText FTextarea FRadio FCheckbox FVideoUpload FSelect FNumber ... styleBatch 样式配置 FTextUnit FColorPicker FSwitch FGradientPicker FHotspotMap FMargin FBorder FBackground ...
📦

标准化模块结构

每个微模块包含 index.ts 入口、Component.tsx 组件、dataBatch 数据配置、styleBatch 样式配置、icon.svg 图标和 skeleton.xml 骨架屏。模块遵循统一的规范,支持脚手架快速创建。

🔄

统一生命周期

所有模块暴露 createModule / render / update / destroy 四个标准生命周期方法。CMS 装修端和 C 端通过相同的接口驱动模块,实现装修即所见即所得。

🎯

环境感知能力

通过 detectModuleEnv 工具函数自动识别运行环境(CMS装修端 / C端用户端 / Server服务端),模块可根据不同环境展示差异化行为和样式。

SSR 渲染引擎

服务端实时渲染 React/Vue 微模块,生成完整 HTML,实现首屏零白屏的极致体验

🌐
用户请求
GET /ssr/page/:user/:code
🔎
设备检测
UA解析 Desktop/Tablet/Mobile
🗃
数据查询
MySQL 页面配置 + 楼层数据
SSR 渲染
VM2沙箱 + JSDOM隔离渲染
📄
模板组装
HTML模板 + 水合脚本注入
响应输出
完整HTML + Cache-Control

VM2 沙箱隔离渲染

每个 React/Vue 微模块在 VM2 安全沙箱中执行,彼底隔离模块间的全局变量污染。沙箱提供受控的 window/document/navigator 环境,确保模块代码安全可靠。

SSR 引擎支持 CJS/UMD/ESM 多种模块格式的自动探测,兼容不同的 Webpack 构建输出。

VM2 沙箱 JSDOM 隔离 内容轮询等待 并发安全
SSR 渲染引擎核心流程 1. 读取模块JS/GZ文件 2. VM2沙箱执行代码 3. 提取createModule 4. 独立JSDOM渲染 输出 innerHTML 模块缓存 ModuleFactory 缓存 文件存在性缓存 模板内容缓存 水合 (Hydration) __HYDRATION_DATA__ 模块脚本 Preload 页面进入动画 无界布局等比缩放

客户端水合 (Hydration)

SSR 输出的 HTML 中嵌入 __HYDRATION_DATA__ 全局变量,包含完整的页面配置和模块数据。客户端加载后,水合脚本自动将静态 HTML "激活"为可交互的 React/Vue 组件。

同时支持页面进入动画(淡入、滑动、幕布展开)、设备兼容性提示、无界装修等比缩放等高级特性。

Hydration Script Preload 优化 进入动画 等比缩放
Hydration 水合流程 SSR HTML + 内联水合数据到达浏览器 解析 Hydration Data 页面配置 + 模块列表 Preload 模块脚本 link preload 并行下载 createModule() 实例化模块 render + update 注入数据+样式

三端 响应式适配

一次装修,Desktop / Tablet / Mobile 三端独立配置样式,设备检测自动适配最佳展示效果

CMS 装修系统 一次装修 / 三端独立样式配置 Desktop 版心宽度: 1200px(任意) 多栏布局支持 (1-4栏) hover 交互效果 大屏数据可视化 💻 Tablet 自适应版心 触控优化交互 横竖屏兼容 中等屏幕排版 📱 Mobile 单列流式布局 手势滑动交互 移动端专属字号 视口等比缩放 📱
📁

三端独立 moduleStyle

每个模块的样式采用 { desktop: {}, tablet: {}, mobile: {} } 三端独立存储结构。装修时可在不同设备视图下分别配置字号、间距、颜色等样式属性,互不干扰。

🔎

User-Agent 智能检测

后端 DeviceDetector 通过 UA 字符串智能判断设备类型,SSR 渲染时自动从 moduleStyle 中提取对应端的样式数据,确保首屏即为最佳适配结果。

🎨

装修端实时预览

CMS 编辑器顶部提供 PC/平板/手机 三个设备切换按钮,切换后画布尺寸变化,同时将对应端样式实时传递给已挂载的模块实例,实现精准预览。

数据流 与页面发布

从装修配置到页面上线的完整数据链路,每一步都清晰可控

拖拽装修
选择布局 + 添加模块
🎨
配置数据
dataBatch + styleBatch
💾
保存页面
JSON轻量化 存入
🚀
发布上线
onLine: 0 -> 1
🌐
SSR 实时渲染
用户访问即渲染

💻 CMS 装修端

  • Vue3 Composable 分层架构
  • usePageComponents - 组件增删改
  • useModuleMount - 模块挂载/重建
  • usePageHistory - 撤销/重做
  • useHistoryManager - 快照管理

🗃 数据存储层

  • MySQL - 页面配置 JSON 存储
  • 文件系统 - 模块 JS/GZ 存储
  • floor[] 存储楼层结构
  • pageStyle 存储页面全局样式
  • 内存缓存 - 模块代码热缓存

技术栈 全景

精选业界主流技术栈,兼顾开发效率与运行性能

技术领域 技术选型 用途说明 亮点
CMS 前端框架Vue3 + TypeScriptCMS 可视化装修系统Composition API + 类型安全
微模块框架React18/Vue3 + TypeScript独立微模块开发跨框架协作,生态丰富
构建工具Vite / Webpack前端构建Vite 极速HMR,Webpack UMD 输出
后端框架Koa2 + Node.jsAPI 服务 + SSR 渲染轻量洋葱模型,中间件灵活
SSR 渲染JSDOM + VM2服务端模块渲染沙箱隔离,安全可控
状态管理PiniaCMS 全局状态轻量 + TypeScript 原生支持
UI 组件库Element PlusCMS 后台 UI丰富组件,企业级品质
数据库MySQL + mysql2数据持久化连接池,高并发支持
鉴权方案JWT + bcrypt用户认证与密码加密无状态 Token + 安全哈希
文件处理zlib + busboyGZ压缩 + 流式上传模块体积压缩 60%+
设备检测UA 解析引擎设备类型识别Desktop/Tablet/Mobile 精准判定
数据统计geoip-lite + 自研访问分析 + 地理位置IP定位 + 多维度统计

架构 设计理念

六大核心设计原则,确保系统可扩展、可维护、高性能

关注点分离 (Separation of Concerns)

Vue3 CMS 负责编排与交互,React/Vue 微模块负责渲染与展示,Node.js 后端负责数据与渲染服务。三大工程各司其职,通过标准化 API 协议通信。

配置驱动 (Configuration Driven)

模块的数据字段和样式属性完全由 dataBatch / styleBatch 配置描述。CMS 端根据配置自动渲染表单控件(FText、FColorPicker、FImageUpload 等),无需为每个模块编写独立的配置面板。

沙箱安全 (Sandbox Security)

SSR 渲染采用 VM2 沙箱执行用户上传的模块代码,每个模块在隔离的 JSDOM 环境中渲染,彻底杜绝全局变量污染和跨模块安全风险。

渐进式缓存 (Progressive Caching)

模块代码工厂缓存(跨请求复用) + 文件存在性缓存(减少磁盘IO) + 模板文件缓存 + HTTP Cache-Control 响应头,多层级缓存策略显著提升渲染性能。

三端同构 (Isomorphic Multi-Device)

同一份页面配置数据,通过 moduleStyle 三端独立样式存储 + 设备检测自动适配,在 Desktop / Tablet / Mobile 上呈现最优展示效果。

可扩展模块生态 (Extensible Module Ecosystem)

标准化的模块开发规范 + 脚手架创建工具 + 构建上传一体化流程,开发者可快速创建新模块并无缝接入 CMS 平台,形成可持续增长的模块生态。