我们怎么开发一套 ERP:
一套框架,200+ 行业复用
从单文件玻璃拟态前端,到 Node 原生后端 + SQLite 落盘,再到 4K 截图与 AI 语音解说——本文拆开 Y2Ksoft 开发 ERP 系统的完整框架与逻辑,并以「美容美发(丽人美发沙龙)」为例,看一套真实系统是怎么从这副骨架里长出来的。
一、设计哲学:先把"能跑、能交付"钉死
我们做行业系统,第一条铁律是 零安装、零运维、开箱即用。中小客户没有 IT 团队,一套需要装数据库、配环境、起服务的系统在他们手里就是灾难。所以框架从第一天就围绕三件事设计:
单文件优先
前端能单 HTML 文件就单文件,双击即开,不依赖任何 CDN(图表全自绘)。
私有化部署
数据留在客户本地/自有服务器,不上大厂云。安全合规是甜蜜区,不是卖点。
生成即零 bug
同一套已验证骨架换配置,不每套重写;质量稳、速度快、可批量交付。
二、前端框架:玻璃拟态 + 通用 CRUD 引擎
所有单文件系统共享同一套前端骨架。它不依赖任何框架,纯原生 JS,核心是一组配置驱动的渲染逻辑。
2.1 视觉系统:Glassmorphism
统一深蓝/科技底 + 玻璃卡片 + 渐变光晕背景,全部用 CSS 变量管理主题色,换一套行业只需要改 :root 里的几个变量:
/* 主题变量——换行业只动这里 */
:root{
--bg:#070b18; --p:#3a8bff; --v:#8b5cf6;
--t:#19e3b1; --glass:rgba(255,255,255,.06);
--line:rgba(255,255,255,.12);
}
2.2 单页结构(无路由库)
多个业务页用一组 .page 区块承载,JS 切换显隐,原生实现 SPA,不引任何路由库:
// 导航切换:点哪个模块,显示哪个 .page
function show(id){
document.querySelectorAll('.page').forEach(p=>p.style.display='none');
document.getElementById(id).style.display='block';
}
2.3 通用 CRUD 引擎:MODULES 配置驱动
这是框架的心脏。每个业务模块不是单独写页面,而是一段配置——字段、列、表单、校验都声明在 MODULES 里,一套渲染函数把它们变成表格、表单、增删改查:
const MODULES = {
member: {
title: '会员管理',
fields: ['name','phone','level','balance'],
columns: ['姓名','手机','等级','余额'],
seed: [ {name:'李娜',phone:'138****',level:'金卡',balance:1200} ]
},
// 预约 / 收银 / 库存 / 营销 … 都是同样结构的配置
};
// 一套 renderTable(module) 即可渲染任意模块,新增模块 = 加一段配置
MODULES + 改真实种子数据。这就是"流水线"能铺 200+ 行业的根本原因。2.4 数据层:三种形态按需切换
localStorage
纯前端单文件。数据存浏览器,零后端,适合演示/轻量。
Node + JSON 文件
后端把数据落盘为 JSON 文件,重启不丢,部署最简单。
SQLite(sql.js)
内存库 + 定时落盘,支持复杂联表查询,联机版首选。
2.5 图表:零 CDN 依赖的自绘 SVG/Canvas
驾驶舱里的折线、柱状、环形图全部用原生 createElementNS 手绘 SVG,不引 echarts。好处是单文件离线也能渲染,且体积小、零外部依赖风险。
2.6 组件库
KPI 卡片、玻璃数据表、状态徽章、模态框、Toast 提示、抽屉——一套封装好的组件,所有系统复用,保证视觉与交互一致。
三、后端框架(联机版):Node 原生 + SQLite 落盘
当客户需要多端联机、多人同时用,框架切换到后端形态。我们坚持零框架:用 Node 原生 http / Express 极薄封装,把复杂度压在业务里而不是依赖里。
3.1 路由按资源拆分 + 统一鉴权
// server.js 启动顺序固定:
loadDatabase() // 读 .db 或建空库
seed() // 幂等造数
app.use('/api/member', authMiddleware, memberRoutes) // 整组加鉴权
app.use('/api/auth', authRoutes) // 登录组不加
listen(PORT)
3.2 数据库封装(最核心)
把 sql.js 底层 prepare/step/free 包成 .all()/.get()/.run(),并吞异常返回空,避免单条 SQL 报错拖垮整个请求。提供三个导出:
getDb()—— 业务统一取"包装后"的库getRawDb()—— 仅 seed 用原始库,避免新建独立实例导致"查不到数据"的经典坑saveDb()—— 定时把内存库export()落盘为单文件 .db
3.3 种子数据:幂等 + 真实台账
seed 用 CREATE TABLE IF NOT EXISTS + "有数据就 return" 的幂等开关,造的是贴近真实的业务台账(不是随机垃圾),让演示即刻可信。
3.4 实时:WebSocket 推送
需要实时看板(如传感器、排队叫号)时,Socket.IO 与 http 同端口,路由里用 req.app.get('io').emit(...) 推数据,前端订阅即更新。
3.5 安全与部署
四、框架的两档用法:铺量 vs 天花板
同一副骨架,用出两个层级:
流水线铺量(毛坯换皮)
骨架 + 换主题色 + 改 MODULES 配置,架构/背景/行业深度从简。适合快速覆盖大量行业、验证需求。
对标天花板(精化)
补齐架构分层 + 真实地方/行业背景叙事 + 深度业务逻辑 + 打磨 UI。天花板标杆是「沫阳乡村一体化系统」(38 子系统)。
五、交付不止代码:把系统变成"能卖的成品"
框架最后一步是资产化——用 Playwright 出 4K 横屏/竖屏截图、录屏 + AI 语音解说,把粗糙能力包装成可展示、可上云的成品。这也是我们区别于"只会写代码的人"的地方。
六、实例拆解:美容美发(丽人美发沙龙)怎么搭
下面用「丽人美发沙龙管理系统」演示上面整套框架如何落地一套真实系统。它覆盖了沙龙从获客到经营的全链路。
6.1 业务域与痛点
美发沙龙真实痛点:会员耗卡靠本子记、技师排班冲突、提成算不清、库存(耗材/商品)混乱、老板看不到经营数据。系统要一口气兜住这八件事:
6.2 数据模型:12 张核心表
用框架的 MODULES 思路,先把业务抽象成实体。美容美发系统约 12 张主表:
| 实体 | 关键字段 | 说明 |
|---|---|---|
会员 member | 姓名/手机/等级/余额/积分 | 储值、耗卡、复购的核心 |
员工 staff | 姓名/角色(技师·前台)/提成比 | 排班与提成核算对象 |
服务项 service | 名称/价格/时长/耗卡数 | 开单与耗卡依据 |
商品 product | 名称/进价/售价/库存 | 零售与进销存 |
预约 appointment | 会员/技师/时间/状态 | 排期与到店入口 |
订单 order | 会员/金额/类型(服务·商品) | 收银主表 |
订单明细 order_item | 服务/商品/数量/单价 | 开单明细 |
耗卡记录 redeem | 会员/服务/次数 | 疗程耗卡核销 |
库存 stock | 商品/数量/预警线 | 耗材与商品库存 |
采购 purchase | 商品/数量/单价/供应商 | 入库来源 |
营销活动 campaign | 类型/优惠/周期 | 引流与复购 |
门店 store | 名称/连锁关系 | 多店经营根 |
6.3 核心逻辑:自动联动链
美容美发系统值钱的地方,不是"能录数据",而是一笔业务触发一串自动联动。框架把这串逻辑写成状态机:
6.4 关键算法(框架里的"行业深度")
排班冲突检测
同一技师时间区间重叠即标红,避免双预约。
技师提成自动核算
服务单×提成比例 + 商品单×比例,月底聚合。
疗程耗卡自动核销
按次扣减,余额预警触发续卡提醒。
会员等级与积分
消费累计→等级权益→营销分层触达。
库存预警
低于安全线标红,联动采购建议。
经营驾驶舱
营收/客单/耗卡率/复购率聚合可视化。
6.5 前端 8 大模块(MODULES 直接撑起)
这 8 个页面,正是 2.3 节那套通用 CRUD 引擎 + 各自 MODULES 配置渲染出来的:运营驾驶舱、会员管理、预约排期、收银开单、员工技师、服务项目、库存进销存、营销与数据。驾驶舱含近 7 日趋势(折线)/ 业务分布(柱)/ 结构(环)三图,全部自绘 SVG。
6.6 技术栈与交付
- 形态:单文件玻璃拟态 HTML + localStorage 数据层 + 自绘 Canvas 图表(零依赖、双击即开)
- 框架复用:通用 CRUD 引擎 + 组件库 + 主题变量,8 模块零重复代码
- 交付物:系统本体 + 4K 横/竖屏截图 + 录屏 + AI 语音解说 + 《技术架构白皮书》
七、结语:框架是底盘,流程资产是护城河
回头看——我们开发 ERP 的"框架"本身并不神秘:单文件前端 + 通用 CRUD 引擎 + Node/SQLite 后端 + 资产化交付。真正稀缺的是框架之上、每个行业里那些真实的业务规则与联动逻辑。美容美发只是 200+ 行业里的一个切片;同样的骨架,换一套 MODULES 配置和真实台账,就能长出短剧分账、中医馆连锁、低空巡检、农产品溯源……
当"写代码"被 AI 快速商品化,懂业务才是壁垒。框架让我们把 200+ 行业的流程资产,沉淀成可复用的燃料——这,才是 Y2Ksoft 真正的护城河。