Vlox 是一个社交媒体应用。它的作者最近把技术栈摊开讲了一遍:后端是 Node.js 加 Express,前端是 Cash,数据库是 MongoDB 配 Mongoose。整套组合里,没有 React,没有 Vue,也没有 SQL。
打开网易新闻 查看精彩图片
这个选择在社交应用里不算常见。多数开发者一上手就是 React 或 Vue,作者却反着来,理由有两条。
第一条,他想证明不用传统工具也能做出干净、可用、安全的东西。第二条,轻量。在他看来,React 这类框架自带大量体积和冗余,而 Vlox 并不打算做成 Facebook 那样的巨型平台,不需要操心复杂的扩展问题。范围收窄之后,简单就压过了企业级架构。
数据库那边,选 MongoDB 而不是关系型 SQL,同样是从应用实际怎么运转出发的。
Vlox 不需要数据库的 JOIN。它没有好友功能,是一个内容和社区网络,类似 DEV,所以不存在"朋友的朋友"这类复杂查询。取文章作者信息时,靠的是 Mongoose 的引用和字段填充。作者说,这对中等规模的应用完全够用,但大型关系型数据还是 SQL 更合适。
他给出的判断是,大型社交应用通常走混合路线:
- SQL 负责用户资料、认证、核心关系数据和交易记录;
- NoSQL(比如 MongoDB、Redis 等)负责缓存、实时通知、会话令牌和高速信息流查询。
另一个理由是语言层面的顺手。整个后端跑在 Node.js 上,而 MongoDB 用的是类 JSON 格式,和 JavaScript 技术栈天然契合,开箱即用。
这套组合的核心其实很朴素:Express 做后端骨架,Cash 这个轻量 jQuery 替代品做前端,Mongoose 提供 schema 作为数据结构的蓝图。作者说,他想要的就是把 schema 当模板用。
他没有回避取舍。中等规模够用,不代表大规模也够用;简单优先,前提是范围本身不大。至于这套不走寻常路的技术栈能不能撑住一个社区产品,他把问题抛回给了读者。
热门跟贴