个人开源技术博客前端

📚 个人开源技术博客前端

一个基于 React + TypeScript + Vite 构建的现代化个人技术博客系统,专注于前端开发、Web技术分享与探索。

在线预览 https://pzhdv.cn

项目仓库

✨ 特性

  • 🚀 现代化技术栈: React 19 + TypeScript + Vite 7
  • 🎨 响应式设计: 基于 Tailwind CSS 4.x,支持移动端和桌面端
  • 📝 Markdown 支持: 完整的 Markdown 渲染,支持代码高亮
  • 🌙 主题切换: 支持明暗主题切换
  • 📱 移动端优化: 响应式布局,完美适配各种设备
  • 🔍 分类浏览: 支持文章分类和标签系统
  • 📅 博客日历: 可视化展示文章发布时间
  • ♾️ 无限滚动: 优化的文章列表加载体验
  • 🎯 SEO 友好: 完善的 meta 标签和语义化结构
  • 🔄 骨架屏加载: 优雅的加载占位体验
  • 📦 代码分割: 智能的 chunk 分包策略,优化加载性能

📸 成果展示

🖥️ pc端

骨架屏 (加载数据)

首页

文章分类

文章详情

关于我

切换主题

📱 移动端

🛠️ 技术栈

🔧 核心框架

技术 版本 说明
React 19.1.0 用户界面库
TypeScript 5.8.3 类型安全的 JavaScript
Vite 7.0.0 现代化构建工具
React Router 6.30.1 客户端路由

🎨 样式与UI

技术 版本 说明
Tailwind CSS 4.1.11 原子化 CSS 框架
@tailwindcss/vite 4.1.11 Tailwind CSS Vite 插件

📊 状态管理

技术 版本 说明
Zustand 5.0.6 轻量级状态管理库
React Context 内置 全局状态共享

💾 数据处理

技术 版本 说明
Axios 1.10.0 HTTP 客户端
React Markdown 10.1.0 Markdown 渲染
React Syntax Highlighter 15.6.1 代码语法高亮
date-fns 4.1.0 日期处理工具

🔧 开发工具

技术 版本 说明
ESLint 9.29.0 代码质量检查
Prettier 3.6.2 代码格式化
Husky 9.1.7 Git hooks 管理
Commitizen 4.3.1 规范化提交信息
lint-staged 16.1.2 暂存文件检查

🏗️ 项目结构

复制代码
blog/
├── public/                 # 静态资源
├── src/
│   ├── api/                # API 接口定义
│   ├── assets/             # 静态资源
│   ├── components/         # 可复用组件
│   │   ├── BlogCalendar/   # 博客日历组件
│   │   ├── GlobalErrorBoundary.tsx
│   │   ├── MarkdownRenderer.tsx
│   │   ├── Skeleton/       # 骨架屏组件
│   │   │   ├── HomeSkeleton.tsx
│   │   │   ├── BlogDetailSkeleton.tsx
│   │   │   ├── CategorySkeleton.tsx
│   │   │   ├── AboutSkeleton.tsx
│   │   │   └── SkeletonBase.tsx
│   │   ├── ThemeToggle.tsx
│   │   └── ...
│   ├── context/            # React Context
│   ├── hooks/              # 自定义 Hooks
│   ├── layout/             # 布局组件
│   │   ├── Header.tsx
│   │   ├── Footer.tsx
│   │   └── index.tsx
│   ├── pages/              # 页面组件
│   │   ├── Home.tsx        # 首页
│   │   ├── BlogDetail.tsx  # 文章详情
│   │   ├── Category.tsx    # 分类页面
│   │   └── About.tsx       # 关于页面
│   ├── routers/            # 路由配置
│   ├── store/              # Zustand 状态管理
│   │   └── home.ts         # 首页状态管理
│   ├── types/              # TypeScript 类型定义
│   ├── utils/              # 工具函数
│   └── App.tsx             # 应用入口
├── index.html              # HTML 模板
├── package.json            # 项目配置
├── tsconfig.json          # TypeScript 配置
├── vite.config.ts         # Vite 配置
└── .cz-config.cjs         # Commitizen 配置

🚀 快速开始

📋 环境要求

  • Node.js >= 18
  • npm >= 9 或 yarn >= 1.22

📥 安装依赖

bash 复制代码
npm install
# 或
yarn install

💻 开发环境

bash 复制代码
# 开发模式启动
npm run dev

# 生产模式启动(用于测试)
npm run prod

访问 http://localhost:4000 查看应用

🚢 构建部署

bash 复制代码
# 开发环境构建
npm run build:dev

# 生产环境构建
npm run build:prod

# 预览构建结果
npm run preview

🔧 开发工具

🧹 代码质量

bash 复制代码
# ESLint 检查
npm run lint

# 修复 ESLint 问题
npm run lint:fix

# 修复所有文件的 ESLint 问题
npm run lint:fixAll

# Prettier 格式化
npm run format

📝 提交规范

项目使用 Commitizen 进行规范化提交:

bash 复制代码
# 规范化提交
npm run commit

支持的提交类型:

  • feat: 新功能
  • fix: 修复问题
  • docs: 文档更新
  • style: 代码格式调整
  • refactor: 代码重构
  • test: 测试相关
  • chore: 构建过程或辅助工具的变动

🌐 环境配置

⚙️ 环境变量

在项目根目录创建环境变量文件:

bash 复制代码
# .env - 所有环境共用
VITE_API_BASE_URL=https://your-api-domain.com/api

# .env.development - 开发环境
VITE_API_BASE_URL=http://localhost:8080/blogApi

# .env.production - 生产环境
VITE_API_BASE_URL=https://your-production-api.com/api

📦 构建优化

项目包含多项性能优化配置:

✂️ 代码分割

  • 智能的依赖分包策略
  • React 核心库单独打包
  • 第三方库按功能分组
  • 小依赖合并打包

📉 压缩优化

  • 生产环境启用 Gzip 和 Brotli 压缩
  • Terser 代码压缩和混淆
  • 移除开发环境的 console 语句

📊 分析工具

  • 构建产物可视化分析
  • Bundle 大小监控
  • 压缩效果统计

🎨 主题系统

支持明暗主题切换,主题状态通过 Context 全局管理:

  • 自动检测系统主题偏好
  • 手动切换主题模式
  • 主题状态持久化存储

📜 许可证

本项目采用 MIT 许可证 - 查看 文件了解详情

👨‍💻 作者

🙏 致谢

感谢以下开源项目的支持:

  • Vite --- 下一代前端构建工具
  • ⚛️ React --- 用于构建用户界面的 JavaScript 库
  • 📘 TypeScript --- JavaScript 的超集
  • 🎨 Tailwind CSS --- 实用优先的 CSS 框架
  • 🗃️ Zustand --- 轻量级 React 状态管理
  • 📝 React Markdown --- React Markdown 渲染组件

如果这个项目对你有帮助,请去仓库点个 ⭐ Star 支持一下!

相关推荐
Ricon组态薄荷糖6 小时前
Ricon组态系统:工业组件开发指南与实践
前端·后端·物联网
flash俊杰7 小时前
Electron 桌面应用的进程模型:为什么 fork Next.js standalone
前端
沙蒿同学7 小时前
我把架构约定编译成了会变红的测试:Wails v2 + Go + Vue3 桌面脚手架实战
前端·后端·github
cpolar技术支持7 小时前
本地 Playwright 测试报告怎么远程复盘?Trace Viewer 跑起来后,用 cpolar 分享失败现场
前端·自动化测试·测试工具·cpolar·playwright
wordbaby7 小时前
企业级后台管理系统路由设计与最佳实践指南
前端
胡志辉的博客7 小时前
【完全开源】IP 纯净度检测 可一键部署到自己的CF
前端·javascript·chrome·ip·chromium
Hilaku7 小时前
作为面试官,我最怕遇到什么样的候选人?
前端·javascript·程序员
TiDi8 小时前
Pinia优化重复请求
前端
web3d5208 小时前
01-用 Leafletjs 10 分钟搭一张水利一张图(Vue3 + Vite 实战)
前端·javascript
晚安日记wanna8 小时前
Vue2 的 defineProperty 差在哪四层追问筛掉九成候选人
前端·vue.js·面试