云计算百科
云计算领域专业知识百科平台

characteristic · 博客 个人网站博客开发

我的个人网站 characteristic · 博客 V1.3 —— 从 0 到 1 的全栈搭建记录

**

项目展示

在这里插入图片描述 在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

一、为什么做这个站

我是一个全栈开发者 + 硬件爱好者,平时写 Java 智慧校园系统、玩 ESP32-LVGL、搭树莓派 ROS2 小车,也在 CSDN 上写技术笔记。 之前一直用 CSDN 写博客,但有几个痛点:

  • CSDN 的文章是给平台看的,不是给我自己的——广告多、排版固定、不能展示 GitHub 项目
  • 想要一个能放自己项目、能发日常、能评论的个人空间
  • 不想用 Hexo/Hugo 这种需要 Node 环境的,太过于繁琐
  • 不想用 WordPress,后台臃肿
  • 所以决定:原生手写 HTML,Flask 后端,SQLite 数据库,一个页面一个文件,干净利落。


    二、技术选型

    层选型为什么选它
    前端 原生 HTML + CSS + JavaScript 无框架,CSDN 两栏布局,加载快
    Markdown 渲染 marked.js 浏览器端直接渲染,不需要后端模板
    后端 Flask 轻量,Python 写起来快,适合小项目
    数据库 SQLite 零配置,单文件,不需要装 MySQL
    登录认证 邮箱注册 + GitHub OAuth 微信个人申请不了,CSDN 没开放接口
    外网访问 ngrok 免费,本地穿透公网可访问
    视觉素材 樱花/银河/风铃 mp4 + 银发精灵图 Hero 全屏动态背景
    配色 粉色系 #ff6b9d 少女感,和 CSDN 博客调性一致

    三、页面结构

    personal-site/
    ├── index.html # 首页
    ├── blog.html # 博客列表 + 写文章 + 详情 + 评论
    ├── projects.html # GitHub 项目同步
    ├── personal.html # 记录页(技能栈 + 时间线)
    ├── space.html # 空间分享(朋友圈 + 相册)
    ├── app.py # Flask 后端
    ├── site.db # SQLite 数据库
    ├── assets/ # 图片 / 视频素材
    └── README.md # 项目文档


    四、核心功能详解

    4.1 首页

    首页是一个 CSDN 风格的两栏布局:

    左栏:

    • 顶部 Hero 全屏动态背景,4 张轮播(樱花视频 / 银河视频 / 风铃视频 / 银发精灵图),鼠标下滑后收缩成小 banner
    • 下面 4 个入口卡片:博客 / 项目 / 记录 / 空间
    • 再下面是三个预览板块:
      • 博客:显示你选的那篇文章(或自动匹配"智慧校园"那篇)
      • 项目:自动拉 GitHub 最新更新的仓库
      • 最新文章:自动取你上传的最新一篇 MD
    • 最下面是「联系我」板块:GitHub / CSDN / 邮箱

    右栏:

    • 个人卡:鲨鱼帽小白熊头像(圆形裁切 + 粉色描边),名字「谁暖了冬季」,下面是一句格言
    • categories 分类统计
    • archive 归档按月统计
    • projects 缩略项目

    右下角有个 ⚙ 设置按钮,点开可以选择首页博客板块展示哪篇文章、项目板块展示哪个仓库。

    在这里插入图片描述

    在这里插入图片描述

    4.2 博客

    博客页功能:

    • 右上角「✎ 写文章」按钮,弹出 modal
    • 支持上传 .md 文件,或直接粘贴 Markdown 文本
    • marked.js 实时预览渲染
    • 选分类、填标题,保存到 localStorage(本地)+ 后端 SQLite
    • 列表 4 篇一页分页
    • 每篇文章下面有 ↑ 上移 / ↓ 下移 / 删除按钮
    • 点「阅读全文 →」进详情页,Markdown 完整渲染(标题、表格、代码块、图片)
    • 登录后可以在文章下面评论

    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    4.3 项目

    项目页是 GitHub 同步:

    • 自动调 https://api.github.com/users/Wasd2490/repos 拉仓库列表
    • 每个仓库显示:名字、描述、star 数、fork 数
    • 点仓库进详情页(hash 路由 #repo/<仓库名>)
    • 详情页左侧是文件树,中间是 README 渲染,右侧是语言/更新时间/commit 历史
    • 登录后可以在仓库下面评论

    在这里插入图片描述 在这里插入图片描述 在这里插入图片描述

    4.4 记录

    记录页是我的技能栈和成长时间线:

    • 技能栈:全栈、单片机、机器视觉
    • 时间线:从入门到现在的关键节点 在这里插入图片描述 在这里插入图片描述

    4.5 空间

    空间是朋友圈风格:

    • 发文字 + 图片 / 视频
    • 4 条一页分页
    • 右上角 × 删除
    • 顶部有「动态 / 相册」两个 tab
    • 相册 tab:3 列网格自动收集所有照片,点一下放大查看
    • 数据存在后端 SQLite,刷新不丢 在这里插入图片描述

    五、后端 API

    Flask 后端提供这些接口:

    接口方法说明
    /api/register POST 邮箱注册
    /api/login POST 邮箱登录
    /api/logout POST 退出
    /api/me GET 当前登录用户
    /auth/github GET GitHub OAuth 跳转
    /auth/github/callback GET GitHub OAuth 回调
    /api/posts GET/POST 文章列表 / 发文章
    /api/posts/<id> DELETE 删文章
    /api/moments GET/POST 动态列表 / 发动态
    /api/moments/<id> DELETE 删动态
    /api/comments/<type>/<id> GET/POST 评论列表 / 发评论

    数据库表:users / posts / moments / comments,全部 SQLite 单文件。


    六、踩过的坑

    6.1 CSDN 图片防盗链

    文章里引用 i-blog.csdnimg.cn 的图,在自己网站加载全部 403。 解决:把 4 张预览图全部下载到 assets/ 目录,MD 里写相对路径 assets/home.png。

    6.2 localStorage 存视频超限

    视频转 base64 后太大,超过浏览器 5MB 限制,localStorage.setItem 静默失败,刷新就丢。 解决:改成后端 SQLite 存,Flask 限制 20MB body。

    6.3 嵌套模板字符串语法错误

    JS 里写 `${m.media ? `<img>` : `<video>`}` 嵌套反引号,整个页面崩。 解决:改成字符串拼接 '<img src="' + m.media + '">'。

    6.4 GitHub API 限流

    未认证每小时 60 次,刷新太频繁就 403。 解决:加 localStorage 缓存,首页设置弹窗打开时才重新拉。

    6.5 静态文件路径规则

    图片只能写在 <img src> 或 CSS url() 里,写在 JS 数组里发布会裂图。 解决:头像直接写 <img src="assets/avatar.png">。

    6.6 Hero 轮播空元素

    blog.html 没有 Hero 元素但轮播代码还在跑,layers[cur] 是 undefined 报错。 解决:加 if(!layers[cur])return 空判断。


    七、和智慧校园项目的关系

    我这个网站展示的第一个项目就是 smart-campus-lost-found:

    • 原生 HTTP 全栈实现,不用 Flask/Django
    • Python 标准库 ThreadingHTTPServer 处理 HTTP 报文
    • MySQL 存数据,Cookie + sessions 表持久化会话
    • 支持以图搜图(dHash 感知哈希)、信任分体系、PWA
    • 完整的失物登记 / 招领通知 / 认领审核流程

    这个项目本身就是我原生全栈能力的证明,网站也是用同样的原生思路搭的。


    八、运行方式

    # 安装依赖
    pip install flask flask-cors

    # 启动
    python app.py

    # 打开 http://127.0.0.1:5000

    外网穿透:

    ngrok http 5000


    九、后续规划

    • 微信登录(个人开发者申请不了,先用 GitHub OAuth)
    • 评论区 互通
    • 文章右侧目录自动生成
    • 数据同步

    十、项目已开源

    谁暖了冬季 · 个人博客站 V1.3

    如果这个项目对你有帮助,欢迎点赞收藏评论交流!

    有问题可以在评论区留言,我会尽快回复。


    联系我

    • GitHub:https://github.com/Wasd2490
    • CSDN:https://blog.csdn.net/wjcjjsjs
    • 邮箱:3287316014@qq.com

    仅供学习·著作权归@谁暖了冬季所有

    项目源码已打包,下载即可运行。

    开源协议

    本项目仅供学习交流使用,可自由修改和转载,请注明出处。

    赞(0)
    未经允许不得转载:网硕互联帮助中心 » characteristic · 博客 个人网站博客开发
    分享到: 更多 (0)

    评论 抢沙发

    评论前必须登录!