我是一名前端开发工程师,从大四的时候开始自学前端,荒废了三年时光,在大四的时候才算真正走进 "编程" 这扇大门。也是从那个时候开始学着搭建自己的个人博客,用来记录自己的学习笔记,但是却坚持不下来。而且发现一个奇怪的现象,对于搭建站点的过程我很感兴趣,内容输出却坚持不下来,这是我需要反思的地方。我也翻了翻过往的文章,大多都是记录单一知识点,而且内容很少,缺乏自己的思考。现在 AI 技术已经很成熟了,再记录这类的文章已经没有意义了,用 AI 工具一搜就出来了,而且更精准,更丰富。所以我觉得分享自己的踩坑记录会更有意义一点,这几年来,文章没写多少,搭建博客的工具倒是换了挺多...
那会觉得有一个自己的个人网站是一件很炫酷的事情,展示自己的个人作品,分享技术,慢慢的在这个圈子有一定的影响力... 当然这也只是想想,哈哈。
Wordpress + 自购服务器 + 域名
我最开始使用的博客搭建工具就是 wordpress,它因可以快速搭建起一个独立的网站而被很多人所喜爱,最常见的就是用它来搭建博客系统,因为使用者众多,所以 wordpress 社区非常活跃,有丰富的插件和许多精美的主题。
我搭建 wordpress 博客首先是寻找教程,去 B 站搜索 "wordpress 博客搭建教程" 有大把保姆级课程,都是免费的,或者直接浏览器搜索也能找到很多大佬写的教程。我是先在本地搭建,熟悉了流程之后再放到服务器上,当时用的是 XAMPP,它集成了 Apache 服务器、MySQL 数据库和 PHP 等组件,提供图形化界面,很方便的管理服务,再去 wordpress 官网下载源码,放于指定目录下就可以开始搭建了,根据教程基本上都能够完成!
接下来就是博客上线,又是一顿折腾!对于当时没有任何经验的我,只能是一点一点的摸索。
先是购买了服务器和域名,这里吐槽一下买服务器只有第一次购买是便宜的,到期之后再续费是有点小贵,这也是为什么我在后面放弃了这种方式,只是单纯的挂载一个博客的话成本有点高了。言归正传,买完服务器之后就可以在上面挂载博客了,但是我对于 Linx 的操作是完全不会,对于我这种小白来说,安装 宝塔面板 是再合适不过了,它提供了可视化的操作面板,支持快速创建并管理项目,支持一键安装软件及部署源码。其中它就支持一键部署 wordpress 项目,所以很快的就完成了博客的部署。
后续再完成域名备案就可以了,至于我为什么又放弃了 wordpress 博客,一个原因是因为服务器续费太贵了,我不能够长久使用,还有就是在使用一些主题的过程中经常遇到一些 bug,然后那些主题给我的感觉总是差一点点,我又有一点完美主义,所以结合种种原因,在服务器到期之后,就把文章暂时迁移到了 CSDN。
Vite + Markdown-It
因为之前实在是找不到一款满意的主题,所以我打算自己写一款静态博客,文章以 md
的格式存储在 GitHub 仓库,还可以通过第三方插件的形式接入评论功能,完全不需要用到服务器,所以觉得对于我来说这种静态博客的形式是最适合的。
静态博客的优点有很多:
- 加载速度快,响应时间更短,提供更好的用户体验
- 不需要服务器端代码和数据库,减少了潜在的安全漏洞和攻击风险
- 轻松集成第三方服务和 API,以实现更多的功能和扩展
- 维护成本较低
这个时候我还不知道已经有很多成熟的 "静态站点生成器",傻乎乎的选择一个比较熟悉的框架 vite 和一个可以解析 markdown 语法的工具 markdown-it就开干了。我个人是喜欢那种简约的主题,"麻雀虽小五脏俱全",不需要多么花哨的功能,该有的功能都有就OK:大概规划主要是 列表页,详情页,分类页和标签页;然后要支持评论、搜索、主题切换等。
由于是从零开始搭建,很多东西都要自己去写,很快我就遇到了一道阻碍 "SEO",我使用的 vite 默认是通过 CSR 客户端渲染,这种模式构建出来的页面逻辑都放在了 script,所以渲染出来的是 "空白的" html 页面,这样会导致爬虫无法爬取到我的文章内容,页面也不会被收录,别人也就无法通过搜索引擎搜索到我的文章,这就失去了我建站的意义。后来翻阅文档发现 vite 支持设置 SSR 服务端渲染模式,但是配置起来比较复杂,就在我焦头烂额之际,突然发现了新大陆!
Vitepress + 自定义主题
没错,就是 vitepress,它是一个专为构建高效、灵活且具有极好开发体验的文档站点而设计的静态网站生成器。当然也可以用于构建博客系统,最重要的是它是基于 vite 开发的,所以我之前写的代码基本上可以照搬过来,而且它默认是使用 SSR 渲染模式,构建出的是一个完整的 html 文件,这就很完美的解决了我之前的难题。
在使用了一段时间后,我突然又萌生了一个开源的想法,我想要让别人也用上我写的主题。我当时使用的时候还在 0.x
版本,处于早期开发阶段,不是很成熟,市面上 vitepress theme
不是很多,所以这个想法愈加强烈,于是我又花了一段时间把主题抽离出来,命名为 vitepress-theme-poseidon
并发布到 npm 上。
很快就遇上了一个难以解决的 Bug,以至于让我直接放弃了这个框架!问题就是一个很简单的 Tab 切换,在本地运行毫无问题,部署到远端之后就出现了无法切换的情况。猜测是因为这部分不支持 SSR 组件的问题,使用 vitepress 推荐的 <ClientOnly>
包裹的方式也无用,后面又进行了一些其它的尝试也无果,无奈放弃!我把这些都归咎于 vitepress 还未正式发布,存在一些未知的 Bug。
但我心中做一款开源的博客主题的想法还未泯灭!
Hexo + 自定义主题
经过一番探索,最终我选择了 hexo,这是一款专门用来构建博客的框架,非常成熟,社区也有很多好用的插件。不过需要花时间去学习相关的技术,它支持 ejs
、 njk
、 swig
、 pug
等多种模板引擎,我选择的是 njk,它的语法有点类似 vue 中的插值表达式,看起来舒服一点。然后也是想吐槽一下 hexo 的文档写的真不咋样,要不是结合官方的案例,不然真的很难看懂。
最后成功的把主题使用 njk 语法重构了,不得不说,专门用来构建博客的框架确实不一样,内置了很多 API,很多之前写起来挺 "别扭" 的地方在这里都变得合理了。
终于,我把这个主题 hexo-theme-sea 开源了,并且在 阮一峰老师的周刊 推广下,成功收获了 100 多个 star!
这是一款简约风的博客主题,目前支持功能如下:
- 响应式,完美适应 电脑、 Pad 和 手机
- 主题内置了中英两种语言
- 支持暗黑模式
- SEO 友好
- 支持评论、搜索功能
总结
到如今,我还在一直使用 hexo-theme-sea 主题,同时也在不断地完善和改进。期间也不乏遇见其它优秀的框架,例如:Hugo、 Jekyll、 Astro 等等,但我觉得目前这一款博客已经能够满足我的需求了,适合自己的总是最好的!
博客搭建算是告一段落了,后面还是以产出内容为主,不然光有华丽的外表,毫无内在也是不行的。不知不觉这篇文章已经写了好多字了,这应该算是我真正意义上的第一篇文章吧,以后也会多抽点时间出来分享一下自己的经历,期望能够通过这种方式来锻炼一下语言组织能力。
感兴趣的话关注一下我的个人博客:https://blog.izou.top