项目介绍
为什么会有这个项目
原有的博客使用的是 Halo,但由于 Halo 是使用 Java 编写的,我对 Java 开发不熟悉,因此无法方便的进行二次开发。此外,Halo 的主题开发也相对不太方便。因此,我决定寻找一个新的博客系统。
在对比了 WordPress 和 Hexo 等博客系统之后,我发现 WordPress 的复杂度过高,而 Hexo 虽然简单,但灵活性又不够。因此,我决定自己开发一个博客系统。
我参考了 Hexo 的思路,根据 Markdown 文件生成了一个 data.json 文件,并使用 Node.js 实时检索数据,并将其渲染为 HTML。我还封装了一些常用的模板标签和 API,以提供更便捷的使用方式。
开发这个系统要达到什么目标
传统的博客系统通常都包含文章、页面、配置等基本内容,这与 Hexo 是一致的。因此,在开发过程中,我采用了类似 Hexo 的开发思路,包括文件目录结构、一些模板标签等方面的设计。
为了方便迁移已有的博客,我也保持了系统路由与 Halo 一致,以确保迁移后的博客路径和原始的博客保持一致。这样,读者和搜索引擎可以继续访问原有的博客内容,而无需修改书签或链接。
在基于 Hexo 的基础上,我进一步添加了 API 模块,提供数据查询的功能。这样,可以通过 API 获取博客的相关数据,如文章列表、分类、标签、页面等,以便实现更丰富的功能和定制化需求。
这个博客系统包括以下组件
uuice-cli:这是一个命令行工具,提供了几个命令来简化博客内容的创建和管理:
- uuice new 命令用于创建文章(post)和页面(page)。
- uuice gen 命令用于生成 data.json 文件,其中包含了所有博客内容的元数据。
uuice server 命令用于启动 Node.js 服务器。 uuice-server:这是一个 Node.js 服务器,它由三个模块组成:
- /api 模块:该模块提供了用于查询所有内容的 API 接口。通过这些接口,可以获取博客的文章列表、页面内容、标签、分类等信息。
- /front 模块:该模块用于动态生成前端的 HTML 页面。它接收来自前端的请求,并根据请求的内容动态渲染相应的页面,以实现更灵活的界面展示和交互效果。
- uuice-core:这是一个核心模块,封装了模板引擎所需的标签、过滤器等功能。它还提供了系统所需的所有查询服务,供 /api 和 /front 模块使用。该模块负责处理数据的获取、过滤和转换,以便提供给前端模块和 API 接口使用。
通过这些组件,博客系统能够通过命令行工具创建和管理博客内容,通过 Node.js 服务器提供查询接口和动态生成的前端页面。同时,uuice-core 模块封装了模板引擎所需的功能,并提供系统查询服务,以支持 API 和前端模块的使用。您可以在这个基础上进行完善,以满足更多的需求。