在开发图片编辑器这类前端副业项目时,我们打破了“先设计UI再对接后端”的传统模式,选择从Node后端起步。这背后的逻辑很直接:后端服务是项目的稳定基石,而非炫技的舞台。一个稳固的后端能够清晰定义能力边界,让前端开发可以自由演进和扩展,避免因后端变动导致的前端重构。
一、为什么先做 Node 后端,而不是前端?
在真实开发场景中,图片编辑器类项目通常会面临几个典型问题:
- 纯前端的图片操作方案(如Canvas)往往不够便捷
- 性能难以把控
- 功能扩展成本较高
- 后期难以支撑更复杂的编辑需求
- 权限控制、体验时长、文件安全等需求,前端几乎无法独立完成
- 一旦后期补充后端,前端往往需要重构
引入Node后端后,这些问题得到了有效解决:
- 图片处理核心逻辑交给 sharp.js
- 文件上传、权限控制由服务端统一管理
- 前端只需专注于交互体验和编辑流程设计
核心结论:
后端先行,是为了让前端在未来“可以随心所欲地演进”。
二、整体开发与文章发布节奏
本系列遵循一个明确的原则:
- 开发顺序 = 文章发布顺序
- 每篇文章对应一个可运行的阶段性成果
- 不追求一步到位,而是遵循“能跑 → 能用 → 能扩展”的渐进路径
你可以将其理解为:一边推进真实项目开发,一边将完整过程拆解为系列文章。
三、阶段一:Node 后端优先(项目地基)
阶段目标
搭建一个可以长期被前端依赖的后端服务。
对应文章规划(约占总进度的30%)
① 项目初始化与技术选型
- 为什么选择 Express 而不是 Nest / Koa
- 项目目录结构如何为前端服务优化
- sharp.js 在整体架构中的角色定位
② 用户体系设计(简洁但实用)
- JWT 登录/注册流程实现
- 为何不在一开始引入复杂的 RBAC 权限模型
- 体验时长与访问控制的设计思路
③ 文件上传服务设计
- 使用 multer 处理二进制文件上传
- 图片临时存储与清理策略
④ 图片处理核心能力
- sharp.js 的基础用法与最佳实践
- 图片裁剪、压缩、拼接等真实场景实现
- 前后端在图片处理中的职责划分
⑤ 数据库存储设计
- Sequelize + mysql2 的选型考量
- 以模型定义驱动数据库设计的实践
- 前端如何做到几乎不关心底层表结构
阶段小结:
此阶段结束后,后端接口完整、能力稳定,前端可以随时接入且不受限制。
四、阶段二:前端基础版(先实现可用)
阶段目标
不追求复杂编辑器功能,先确保图片编辑全流程跑通。
对应文章规划(约占40%)
- Vue 3 在工具型项目中的优势分析
- 是否引入 TypeScript 的权衡取舍
- 项目结构如何为后期扩展预留空间
⑦ 图片上传与预览流程
- 前端如何对接后端上传接口
- 图片状态管理的基本思路
- 编辑前、中、后的数据流转设计
⑧ 图片编辑基础能力
- 裁剪、缩放、旋转等基础操作
- 前端仅传递参数,后端负责实际计算
- 为何这种设计更适合副业项目
⑨ 风格切换与配置化设计
- 风格配置的抽象方法
- 避免硬编码样式的原因
- 为后续模板化和商业化预留接口
五、阶段三:渐进式扩展(持续进化不推翻)
阶段目标
在不推翻前期设计的前提下,逐步增强功能。
对应文章规划(约占30%)
⑩ 引入 Markdown 编辑能力
- 为什么 Markdown 适合图文编辑器场景
- 图片与文本的组合方式设计
- 编辑器能力的自然演进路径
⑪ 图文混排与导出能力
- 图文结构化数据设计思路
- 导出为图片或HTML的可行性探讨
⑫ 项目复盘与副业思考
- 哪些能力具备持续扩展价值
- 项目中明确的变现空间分析
- 适合哪类前端开发者跟随实践
六、这套顺序的核心价值
- 对读者:可跟随文章完整复刻项目,不会被复杂架构劝退。
- 对作者:前端内容可逐步补充,后端先完成确保整体节奏稳健。
- 对内容系列:系列感强,技术深度真实,在同类内容中具备稀缺性。
|