为什么自己写一个博客
现成的博客框架很多,但自己从零写一遍,能真正把 数据库设计、会话管理、模板渲染 这几件事串起来。
技术选型
| 层次 | 选择 | 理由 |
|---|---|---|
| 运行时 | Node.js 18+ | 生态好,部署简单 |
| Web 框架 | Express 4 | 轻量、稳定、中间件丰富 |
| 数据库 | MySQL 8 | 通用,云服务器上随处可见 |
| 模板 | EJS | 服务端渲染,SEO 友好 |
数据库设计的几个要点
- 文章与标签是多对多,所以需要一张
post_tags关联表; - 分类与文章是一对多,用外键 +
ON DELETE SET NULL,删分类不会连带删文章; - 评论支持二级回复,用
parent_id自关联; - 站点配置用键值对表,避免频繁改表结构。
CREATE TABLE post_tags (
post_id INT UNSIGNED NOT NULL,
tag_id INT UNSIGNED NOT NULL,
PRIMARY KEY (post_id, tag_id)
) ENGINE=InnoDB;
一个容易踩的坑
用 mysql2 的预处理语句时,LIMIT ? 占位符在不同版本上表现不一致。稳妥的做法是先做整数校验,再拼接:
const size = Math.min(Math.max(Number(size) || 10, 1), 100);
await pool.query(`SELECT * FROM posts LIMIT ${size}`);
先让它跑起来,再让它跑得漂亮。
评论
还没有评论,来说点什么吧。