从零开始,建立技术直觉。
本仓库是 joylibo.github.io 的源码,基于 Hugo 构建,使用 Hugoplate 主题,通过 GitHub Pages 部署。
每节课均提供文字版课件、代码示例,并链接 Bilibili / YouTube 视频。
| 系列 | 技术栈 | 状态 |
|---|---|---|
| 零到全栈 | React · Next.js · Python · FastAPI · Linux | 录制中 |
| 玩转 Agent | Claude Code · Cursor · AI 工作流 | 筹备中 |
| 深度学习 | 神经网络原理 · PyTorch · LLM 原理 | 筹备中 |
首页 | 零到全栈 | 玩转 Agent | 深度学习 | 博客 | 关于
首页 — 站点门面,提供各课程系列的概要信息与入口链接。设计目标:简洁、清晰、5 秒内让访客理解这个网站是什么。
零到全栈 / 玩转 Agent / 深度学习 — 各课程系列的主页,包含课程介绍、模块目录、每节课入口及对应视频链接。筹备中的系列显示预告信息与等待加入入口。
博客 — 课程之外的心得、随笔,按时间倒序排列。
关于 — 个人背景、课程理念、联系方式。
content/english/
├── _index.md # 首页
├── zero-to-fullstack/ # 零到全栈
│ ├── _index.md # 系列主页(课程介绍 + 模块目录)
│ └── lessons/ # 课件文章(每节课一篇 .md)
│ ├── 1-1-why-fullstack.md
│ ├── 1-2-course-overview.md
│ └── ...(共 23 节)
├── ai-agent/ # 玩转 Agent
│ └── _index.md # 系列主页(筹备中)
├── deep-learning/ # 深度学习
│ └── _index.md # 系列主页(筹备中)
├── blog/ # 博客
└── about/ # 关于
└── _index.md
前置要求: 已安装 Hugo(extended 版本)和 Node.js
# 安装依赖
npm install
# 启动本地预览(含热更新)
hugo server
# 构建静态文件
hugo本地预览地址:http://localhost:1313
.
├── content/english/ # 所有内容(Markdown)
├── static/ # 静态资源(logo、favicon、图片等)
├── themes/hugoplate/ # 主题(不直接修改主题文件)
├── layouts/ # 自定义模板(覆盖主题默认)
├── assets/ # 自定义样式与脚本
├── config/ # 站点配置(导航、参数等)
└── hugo.toml # 主配置文件
推送到 master 分支后,GitHub Actions 自动构建并发布到 GitHub Pages。
如果部署到自己的 Ubuntu 服务器,建议在服务器上完成静态构建,然后让 Nginx 托管构建产物。生产环境请使用和 CI 一致的 Hugo extended 版本(当前为 0.160.0)。
推荐直接使用项目中统一维护的生产构建命令:
cd ~/joylibo.github.io
git pull --ff-only
npm ci
npm run build如需逐步执行,也可以继续使用原来的方式:
npm ci
node scripts/themeGenerator.js
hugo --gc --minifynpm run build 已经包含主题 CSS 生成和 Hugo 构建,并在原有步骤的基础上统一使用项目约定的缓存清理、输出目录清理等参数。以上两种构建方式选择一种即可,不需要重复执行。
npm ci 会严格按照 package-lock.json 安装依赖,更适合服务器和 CI 环境;本地开发时继续使用 npm install 也可以。
构建完成后,静态文件会输出到 public/ 目录。Nginx 的 root 应指向这个目录,server_name 应填写实际要访问的网站域名。
如果使用中文域名,Nginx 配置中建议使用 Punycode,而不是直接写中文域名。例如 李勃老师.com 对应的 Punycode 是 xn--ygr25xpohxwz.com:
server {
listen 80;
server_name xn--ygr25xpohxwz.com;
root /home/ubuntu/joylibo.github.io/public;
index index.html;
location / {
try_files $uri $uri/ /index.html;
}
}修改 Nginx 配置后,检查并重载:
sudo nginx -t
sudo systemctl reload nginxhugo server 只适合本地开发或临时预览,不建议作为正式线上服务。
Toy 与网站共用同一份 Markdown 内容和 Hugo 模板,但使用独立的构建命令:
npm run build:toy构建产物位于 dist/。该流程会自动把站内地址改写为可在 Toy 子目录中工作的相对路径,剔除重复字体文件,并检查路径与产物体积。若官方明确了资源上限,可通过 TOY_MAX_MB 设置严格预算,例如:
TOY_MAX_MB=50 npm run build:toy普通网站继续使用 npm run build,产物仍位于 public/,两种构建互不覆盖。