My Blog
技术4054 字 · 约 10 分钟

停停停,来看看!

热烈庆祝牛来票房突破3000万,中国国产动漫有救了!顺便庆祝一下我的网站上线o周年0天。。

hello!

你好啊,朋友,自这个网站上线以来,这是第一篇博客,你也是我第一个读者哦(当然也许还有许多个在“并行”和“异步”)。哈哈,毫不谦虚地说,我简直是世界第二风趣之人.

嗯~第一风趣之人是谁呢?也许你黑一下屏,答案就出来了。

嘻嘻,废话多说了。总而言之,言而总之,请为我们伟大的个人博客的诞生狂欢吧哈!为庆祝本站诞辰0周年,本世界第二风趣之人确定赠予读到当下的读者一人一个大大的赞扬!各位吴彦祖、吴亦菲无一不是人见人爱,花见花开,铁轨见了都裂开~啊哈哈

鄙人愚钝,所谓狗嘴吐不出象牙。诸君见谅嘻嘻。

自我介绍一下吧,俺来自农村,妥妥无产阶级一个,估计上辈子拉屎递过纸,有幸到江苏读书,无奈是时运不济,命途多舛(下一句是什么来着~),嗯报国无门,无路请缨,怀才不遇(多戏了~)去当了四个月的牛马,现在苦苦看书,考研啊。

记得大三,手搓了个个人博客(当然烂得没法看),靠着这个粗制滥造的项目(堪称编程界的牛来 ~ 妈妈!咦?什么脏东西),居然找到了工作(外包,哭 ~ )。不过最终结局是坏的,还是受不了高压的环境,溜溜球了~

于是,我总有一个心结。所谓须知少日拏云志,曾许人间第一流,我要做世界第一博客!(咦,好中二~)。于是我学啊学,学啊学,霍啊,马上要进阶大斗师了,突然天降天阶斗技,一学,我靠,有挂!

当然,AI是也。

呜呜呜,这下更焦虑了~

不过话说两头,拥有天阶斗技的我(呸呸呸,天阶斗技都烂大街了,谁还不是人手一本啊)开发博客岂不是如鱼得水,如日中天,品如(啊西八)

不得不说,开挂就是爽,一时开挂一时爽,一直开挂一直爽!前几天刚好发布deepseek harness ,于是我就去拜访宗门长老梁圣(话说deepseek涨价了我是叫梁子呢还是嘻嘻)

从昨天下午立项到今天下午,历时86,400秒(人话一天,真能装),俺神功大成。话说随着练功到后期,确实容易走火入魔哈。那deepseek是脱缰的野马,离家的世贤(不是)。

总而言之,言而总之,历经九九八十一难(真能吹~),本项目终于上线了。质量从牛来一跃飞升到749局(不是飞升在哪?)。哈不过这只是开始,俺会不断进步的,终有一天我要抱着我的博客上奥斯卡!(幻想中~)

谢谢你朋友,听我说了这么多废话。特此,邀请你见证我和我的博客的爱情。感谢你特别邀请来见证你的爱情(你看你又唱!)

我朋友曾说我特别抽象,我不以为然,也许是身在抽中不知抽(你是M吗?)当然,如果我的抽像博我的朋友们一笑,俺不胜荣幸!

扯了一大堆,作为一个程序员(牛马),怎么能没点技术输出呢?我就象征性的列一下本项目用到技术栈吧(嘿嘿嘿骗你的,技术栈是ai的,帖主是采购~)

一想到说了这么多肯定没人来看,一怒之下路了一下(?审核你看他)。当然是悲从中来,悲极生乐。最后跟大家求个一键三连(串台了~)

1. 核心框架与渲染

技术用途
Astro 7output: 'server'全站 SSR + 按需静态生成;.astro 组件 + 页面级数据加载
React 19 + @astrojs/react交互密集区用「岛屿」(islands)架构:编辑器、主题切换、个人中心、设置表单
View Transitions(<ClientRouter/>跨页面 SPA 式平滑转场 + transition:persist 保留常驻元素(header/背景/进度条)

2. 样式与主题

技术用途
Tailwind CSS v 4@tailwindcss/vite 插件)CSS-first 配置、原子类、@theme inline 令牌
自定义设计令牌亮/暗双主题 + 终端/黑客等主题 JSON(public/themes/);像素字体 Fusion Pixel、Lora、Silkscreen
tw-animate-css + 手写 keyframes卡片入场 reveal、按钮波纹、流星/烟花粒子、数字滚动等动效
Giscus文章评论(GitHub Discussions 驱动)

3. 编辑器(所见即所得)

技术用途
CodeMirror 6(@codemirror/* 全家桶)Markdown 编辑核心:语法高亮、行号、搜索、快捷键、Live Preview(Obsidian 式隐藏标记)
MarkdownEditor.tsx(复用组件)文章 + 日记共用;图片上传/粘贴/拖拽、光标插入、目录跳转
客户端图片压缩工具canvas 缩放 + 降质循环,规避 Vercel 4.5 MB 请求体限制

4. 内容与 Markdown/MDX 管线

技术用途
unified + remark + rehype完整转换管线:GFM、directive、slug 锚点、prism 代码高亮、标题自动链接
@mdx-js/mdx evaluate文章动态编译为 MDX(支持 JSX 组件)
github-slugger / transliteration标题 slug 与中文转拼音 URL

5. 数据层

技术用途
Drizzle ORM 0.45类型安全查询;双方言 schema(SQLite/PG 各一份,代码同路径切换)
better-sqlite 3(开发)本地文件库 data/blog.db,WAL 模式
postgres.js(生产)PostgreSQL 连接;DATABASE_URL 前缀自动选择方言
drizzle-kit迁移生成/推送(db/migrations/pg/*.sql

6. 存储与媒体

技术用途
Vercel Blob影集照片原图/缩略图(公开 CDN URL),token 环境变量控制
DB base 64(images 表)博客插图/头像/背景——零配置、兼容无磁盘的 Serverless
外部 URL动态视频仅支持外链(bilibili iframe/YouTube/mp 4)

7. 认证与安全

技术用途
Session Cookie + HMAC 签名AUTH_SECRET管理员单用户登录
Astro middleware路由/API 分级保护(admin/edit/日记/写操作需登录;读公开)
Cache-Control 策略HTML 防缓存(防旧页面引用失效 JS)+ 预取响应 60 s 短缓存

8. 部署与运维

技术用途
@astrojs/vercel 11Serverless 函数输出(.vercel/output
Vercel托管 + Postgres + Blob + 环境变量 + 自动部署
Prefetch 优化hover/视口预取 + link rel=prefetch 缓存命中(点击 1 ms)
加载指示系统顶部进度条 + 居中转圈(点击立即出现、最短 400 ms、交换后淡出)

9. 功能子系统

子系统关键技术
文章MDX evaluate、分页/搜索/标签、封面图提取、草稿自动保存(防竞态)
影集瀑布流布局、时间线聚合、按日期分组、无缝排列、Blob 上传
日历lunar-javascript(农历/节气/干支/节日)、待办/日记/纪念日(每年重复+农历)、聚合 API 局部更新
动态(moments)文字/图片/GIF/视频流式发布、加载更多
个人中心头像/简介/社交链接对话框(Radix Dialog)
站点设置Hero 诗词轮播、全站背景(开关/图片/透明度/模糊)、JSON KV 存储

10. UI 组件库

技术用途
Radix UI(dialog/dropdown/tabs/select…)无头可访问组件
class-variance-authority + tailwind-merge + clsx组件变体与类名合并(shadcn 风格)
lucide-react图标

11. 测试与开发工具

技术用途
Vitest56 个单元测试(日历农历/热力图/动态/图片/主题/MDX)
@astrojs/check + TypeScript 6全站类型检查
playwright-core无头浏览器验证(转场/布局/加载指示)
tsxseed/迁移脚本执行

嘿嘿,你不会看到最后了吧,这么枯燥的ai写的技术都能看完,你一定能干大事!(技术栈都是二级标题,这样大家一看目录就知道这是一篇干货满满的博客(实则不然),于是空气里充满了“NB”的氛围)