嘿,欢迎来到我的博客开发历程分享!这篇文章将带你了解我如何从零开始,使用Docusaurus构建这个你现在正在浏览的个人博客网站。从最初的技术选型纠结,到一步步实现各种功能,再到最终部署上线,我会分享整个过程中的思考、挑战和解决方案。
为什么我最终选择了Docusaurus
说实话,选择一个合适的博客框架真的让我头疼了好一阵子。市面上有太多选择,每个都有各自的优缺点。在做决定之前,我花了不少时间研究和对比了几个主流的静态站点生成器:
我考虑过的其他选择
- Next.js:
- ✅ 极其强大的React框架,几乎能实现任何功能
- ✅ 支持SSR/SSG/ISR等多种渲染方式
- ❌ 需要从头开始搭建博客功能,工作量大
- ❌ 配置相对复杂,学习曲线陡峭
- ❌ 对于"只是想要一个博客"来说有点大材小用
- Hugo:
- ✅ 构建速度惊人(Go语言编写)
- ✅ 部署简单,不依赖Node.js环境
- ❌ 使用Go模板语言,不是我熟悉的技术栈
- ❌ 自定义组件相对困难
- ❌ 主题定制需要深入了解Hugo的模板系统
- Hexo:
- ✅ 专为博客设计,中文社区活跃
- ✅ 主题和插件生态丰富
- ❌ 很多主题质量参差不齐,需要大量修改
- ❌ EJS模板不如React组件灵活
- ❌ 文档质量不够高,有些功能需要自己摸索
- VuePress/VitePress:
- ✅ 基于Vue生态,界面美观
- ✅ 文档支持良好
- ❌ 主要针对文档网站,博客功能是次要的
- ❌ 我更熟悉React而非Vue
为什么Docusaurus最终胜出
经过一番对比和实验,我最终选择了Docusaurus,主要基于以下几点考虑:
- React驱动的开发体验:作为一名React开发者,我可以直接利用已有的技能和组件库。不需要学习新的模板语言,直接用JSX就能自定义任何部分。
// 举个例子,我可以轻松创建自定义React组件
function Hero() {
return (
<div className={styles.hero}>
<div className={styles.intro}>
<h1>王起哲的博客</h1>
<p>在这里分享我的技术探索之旅</p>
</div>
</div>
);
}
- 开箱即用的完整功能:Docusaurus提供了博客所需的几乎所有功能,包括:
- 文章列表和分类
- 标签系统
- 全文搜索(集成Algolia)
- 代码高亮
- 暗黑模式
- 国际化支持
- SEO优化
这意味着我可以专注于内容和定制,而不是从头实现这些基础功能。
- MDX的强大表现力:能在Markdown中直接使用React组件是一个巨大的优势。这让我可以在保持内容简洁的同时,在需要的地方添加交互式元素。
# 我的文章标题
这是普通的Markdown内容。
<CodeSandbox slug="react-demo" />
继续写Markdown内容...
-
灵活的主题定制机制:Docusaurus的swizzling机制让我可以精确地覆盖和定制任何组件,而不需要fork整个主题。
-
文档与博客的完美结合:我不仅需要写博客文章,还想整理一些技术笔记和教程。Docusaurus的文档+博客双模式正好满足这一需求。
-
活跃的社区和持续维护:由Meta(Facebook)团队维护,更新频繁,文档详尽,这给了我长期使用的信心。
-
性能优化:内置了很多现代Web性能优化,如代码分割、预加载、PWA支持等。
总的来说,Docusaurus提供了一个平衡的解决方案— —足够简单,可以快速上手;又足够灵活,能满足各种定制需求。对于像我这样既想要一个漂亮的博客,又希望能充分发挥前端技术的开发者来说,它是一个理想的选择。
开发环境搭建:从零开始的第一步
好啦,既然决定用Docusaurus了,那就赶紧动手搭建环境吧!说实话,刚开始我也是一头雾水,但实际操作起来比想象中简单多了。
前置准备
首先,得确保电脑上装了这些东西(没装的话赶紧补上):
-
Node.js:v18或更高版本就行(我用的v18.16.0,老版本可能会有奇怪的问题)
-
npm或yarn:我习惯用npm,主要是懒得再装一个yarn😂
-
Git:这个必须有,不然后面部署和版本控制会很头疼
创建项目
Docusaurus的脚手架工具真是太方便了,敲一行命令就搞定,完全不用手动配置那堆烦人的东西:
# 创建项目(classic是模板名称)
npx create-docusaurus@latest my-blog classic
# 进到项目目录
cd my-blog
# 启动开发服务器看看效果
npm start
敲完这几行命令后,浏览器会自动打开http://localhost:3000,然后...哇!一个模板网站就这么出现了!虽然长得有点丑,但基本功能都有了,这就是我喜欢用框架的原因——先跑起来再说,看到成果心里才有底。
不过说实话,这个默认模板离我心目中的博客差得还挺远的,后面得下不少功夫改造它。但至少有个基础,总比从零开始写HTML/CSS强多了,对吧?