为什么要零依赖
个人站点最容易死在"依赖腐烂"上:年初装的一堆包,年末 npm install 就报错。我的做法是把需求砍到最小,只用 Node 自带的模块。
import { createServer } from 'node:http';
import { DatabaseSync } from 'node:sqlite';
const db = new DatabaseSync('./data/site.db');
const server = createServer(async (req, res) => {
res.writeHead(200, { 'content-type': 'text/html; charset=utf-8' });
res.end('<h1>张师傅的技术小屋</h1>');
});
server.listen(4310);
> Node 22.5 起内置了 node:sqlite,Node 24 已经可以直接使用,不必再编译 native 驱动。
路由怎么切
没有框架,路由就是一张表:
| 路径 | 作用 | 是否需要登录 |
|---|---|---|
/ | 首页 | 否 |
/posts | 文章列表 | 否 |
/works | 作品展示 | 否 |
/admin | 后台管理 | 是 |
/api/* | 数据接口 | 视接口而定 |
安全上的三个底线
- 所有用户内容进模板前先转义,宁可多转一次;
- 静态文件解析后必须校验真实路径仍在允许目录内;
- 修改类接口校验
Origin,会话 Cookie 用HttpOnly + SameSite=Lax。
小结
零依赖不是炫技,而是把"三年后还能一键启动"当成硬需求。