返回博客

小黑丸纯文本极简博客程序

项目概述 小黑丸博客是一个专注于内容的极简纯文本博客系统,采用现代Web技术栈构建,提供流畅的用户体验和简洁的内容管理界面。该系统以内容为中心,去除了不必要的视觉干扰,让读者专注于文章内容本身。系统支持Markdown格式,让创作者能够轻松编写和发布结构化的文章。 主要特点 极简设计:专注于内容展

2026年7月7日7 次阅读

项目概述

小黑丸博客是一个专注于内容的极简纯文本博客系统,采用现代Web技术栈构建,提供流畅的用户体验和简洁的内容管理界面。该系统以内容为中心,去除了不必要的视觉干扰,让读者专注于文章内容本身。系统支持Markdown格式,让创作者能够轻松编写和发布结构化的文章。

主要特点

  • 极简设计:专注于内容展示,减少视觉干扰
  • 响应式布局:完美适配从手机到桌面的各种设备
  • Markdown支持:原生支持Markdown格式,轻松创建格式丰富的文章
  • 暗色模式:内置亮色/暗色主题切换,保护用户视力
  • SEO优化:针对搜索引擎优化的元数据和结构化数据
  • 安全管理:密码保护的管理界面,确保内容安全
  • 性能优化:快速加载时间和流畅的用户体验

技术栈详解

前端技术

  • Next.js 14:React框架,提供服务器端渲染和静态生成能力
  • React 18:用户界面库,采用函数式组件和Hooks
  • TypeScript:类型安全的JavaScript超集
  • Tailwind CSS:实用优先的CSS框架,用于快速构建自定义设计
  • shadcn/ui:基于Radix UI的组件集合,提供可访问性和可定制性
  • Lucide Icons:简洁美观的SVG图标库

后端技术

  • Next.js API Routes:处理API请求的服务器端功能
  • Server Actions:Next.js的服务器端操作功能,用于表单处理
  • Supabase:开源的Firebase替代品,提供数据库和身份验证服务
  • PostgreSQL:强大的关系型数据库,用于存储博客内容

开发工具

  • ESLint:JavaScript和TypeScript代码质量工具
  • Prettier:代码格式化工具
  • Vercel:部署和托管平台

系统架构

小黑丸博客采用现代的分层架构设计:

  1. 表示层:React组件和Tailwind CSS样式
  1. 应用层:Next.js页面和路由
  1. 业务逻辑层:Server Actions和API Routes
  1. 数据访问层:Supabase客户端和数据库操作
  1. 数据存储层:PostgreSQL数据库

系统使用Next.js的App Router,采用基于文件系统的路由,每个路由对应一个页面组件。数据流采用服务器组件和客户端组件的混合模式,确保最佳性能和用户体验。

数据库设计

博客系统使用简单而高效的数据库设计:

文章表 (posts)

``sql

CREATE TABLE posts (

id UUID PRIMARY KEY DEFAULT uuid_generate_v4(),

title TEXT NOT NULL,

slug TEXT NOT NULL UNIQUE,

content TEXT NOT NULL,

published BOOLEAN NOT NULL DEFAULT false,

created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now(),

updated_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT now()

);

CREATE INDEX idx_posts_slug ON posts(slug);

CREATE INDEX idx_posts_published ON posts(published);

`

主要组件详解

核心组件

#### 1. 站点头部 (SiteHeader)

站点头部组件包含网站标志、导航链接和主题切换按钮。它是固定在页面顶部的,在用户滚动时保持可见。

#### 2. 文章卡片 (PostCard)

文章卡片组件用于在首页和列表页面展示文章预览。它显示文章标题、发布日期、阅读时间估计和内容摘要。

#### 3. Markdown渲染器 (MarkdownRenderer)

Markdown渲染器组件负责将Markdown格式的文本转换为HTML并应用语法高亮。它使用marked库进行转换,并使用Prism.js进行代码高亮。

#### 4. 文章表单 (PostForm)

文章表单组件用于创建和编辑文章。它包含标题、slug、内容和发布状态字段,并使用Server Actions处理表单提交。

管理组件

#### 1. 管理头部 (AdminHeader)

管理头部组件是管理界面的导航栏,包含返回网站、创建新文章和登出按钮。

#### 2. 删除文章按钮 (DeletePostButton)

删除文章按钮组件提供安全的文章删除功能,包含确认对话框以防止意外删除。

页面结构

公开页面

  • 首页 (/):显示已发布文章的列表
  • 文章详情页 (/posts/[slug]):显示单篇文章的完整内容
  • 关于页面 (/about):关于博客和作者的信息

管理页面

  • 管理面板 (/admin):显示所有文章(包括未发布的)
  • 登录页面 (/admin/login):管理员登录界面
  • 新建文章 (/admin/new):创建新文章的表单
  • 编辑文章 (/admin/edit/[slug]):编辑现有文章的表单

认证与授权

博客系统使用简单而安全的认证机制:

  1. 密码认证:使用环境变量中的管理员密码进行验证
  1. 会话管理:使用HTTP-only cookies存储会话令牌
  1. 中间件保护:使用Next.js中间件保护管理路由

认证流程:

  1. 用户访问管理页面
  1. 中间件检查会话cookie
  1. 如果未认证,重定向到登录页面
  1. 用户输入密码
  1. 服务器验证密码并创建会话
  1. 用户被重定向到管理面板

数据流程

读取文章流程

  1. 用户访问首页或文章页面
  1. Next.js服务器组件调用getPublishedPostsgetPostBySlug函数
  1. 函数使用Supabase客户端查询数据库
  1. 数据返回给服务器组件
  1. 服务器组件渲染HTML并发送给客户端

创建/编辑文章流程

  1. 用户填写文章表单
  1. 表单提交到Server Action
  1. Server Action验证输入并检查slug唯一性
  1. 数据保存到数据库
  1. 缓存被重新验证
  1. 用户被重定向到管理面板

性能优化

小黑丸博客采用多种技术确保最佳性能:

  1. 服务器组件:减少客户端JavaScript负载
  1. 缓存函数:使用React的cache函数缓存数据库查询
  1. 图像优化:使用Next.js的Image组件进行自动图像优化
  1. 代码分割:自动的基于路由的代码分割
  1. 懒加载:动态导入重量级库如marked和Prism.js
  1. 响应式设计:确保在所有设备上的良好性能

部署指南

前提条件

  • Node.js 18+
  • Supabase账户
  • Vercel账户(推荐)

环境变量

部署前需要设置以下环境变量:

`plaintext

SUPABASE_URL=https://your-project.supabase.co

SUPABASE_ANON_KEY=your-anon-key

SUPABASE_SERVICE_ROLE_KEY=your-service-role-key

ADMIN_PASSWORD=your-admin-password

NEXT_PUBLIC_APP_URL=https://your-domain.com

`

数据库设置

  1. 在Supabase中创建新项目
  1. 执行上述SQL创建posts表
  1. 设置行级安全策略(RLS)

Vercel部署步骤

  1. 将代码推送到GitHub仓库
  1. 在Vercel中导入项目
  1. 配置环境变量
  1. 部署项目

使用指南

访问博客

访问您的部署URL(例如https://your-domain.com)浏览博客内容。

管理内容

  1. 访问/admin/login并输入管理员密码
  1. 在管理面板中,您可以:

  1. 查看所有文章
  1. 创建新文章
  1. 编辑现有文章
  1. 删除文章
  1. 发布或取消发布文章

编写文章

  1. 在管理面板中点击"新建文章"
  1. 填写标题和slug(URL)
  1. 使用Markdown编写内容
  1. 选择是否立即发布
  1. 点击"保存文章"

自定义和扩展

主题定制

通过修改tailwind.config.jsglobals.css`文件自定义主题颜色和排版。

添加新功能

系统设计为模块化,可以轻松添加新功能:

  1. 评论系统:集成第三方评论服务如Disqus或自建评论系统
  1. 标签系统:添加文章分类和标签功能
  1. 搜索功能:实现全文搜索
  1. 分析功能:集成Google Analytics或其他分析工具

维护与更新

定期维护

  1. 更新依赖包以获取安全补丁
  1. 备份数据库
  1. 监控性能和错误日志

故障排除

常见问题及解决方案:

  1. 数据库连接错误:检查Supabase凭证和网络连接
  1. 认证问题:确保环境变量正确设置
  1. 渲染错误:检查Markdown内容格式

结语

小黑丸博客系统是一个轻量级但功能完备的博客平台,专为内容创作者设计。它的简洁设计和强大功能使其成为个人博客、技术文档或项目展示的理想选择。通过专注于核心功能和用户体验,它提供了一个高效、易用的内容发布平台。


此文档最后更新于2025年3月18日