今天来聊聊我之前瞎折腾的一个小项目,我管它叫“kb之家”。也没啥高大上的,纯粹是个人实践的一个记录,顺便分享下过程中的一些想法和坑。
最初的想法
起初,就是觉得平时看的东西太杂了,各种资料、笔记、代码片段啥的,东一个文件夹西一个文档,找起来特费劲。有时候突然想到个啥点子,不记下来转头就忘。所以就琢磨着,能不能搞个自己的小“窝”,把这些零零散散的“知识碎片”(knowledge bits,简称kb嘛哈哈,名字就这么来的)都归拢到一块儿,方便自己查阅和管理。
动手开干
说干就干。一开始我没想太复杂,就想着先搭个简单的框架出来。
- 选技术栈: 我那时候对Python还算熟悉,Flask框架又轻量,就决定用它来做后端。前端嘛咱也不是专业的,就随便找了个简洁点的Bootstrap模板先套上,想着以后有空再慢慢美化。数据库就用了SQLite,小项目够用了,还不用单独配环境。
- 核心功能构思: 最基本的就是文章的增删改查。然后得有个分类和标签功能,不然东西多了还是乱。再加个全文搜索,这个是刚需。
于是我就开始吭哧吭哧敲代码了。先是把数据库模型建起来,文章表、分类表、标签表,还有它们之间的关联关系。这块儿还算顺利,毕竟需求不复杂。
接着就是写后端的API接口。比如获取文章列表的、获取单篇文章内容的、保存文章的、删除文章的。这部分调试起来就花了点时间,特别是处理用户输入,得考虑各种校验,防止乱七八糟的数据把程序搞崩了。
前端页面我一开始就是依葫芦画瓢,对着Bootstrap的文档,把各个组件拼起来。首页显示文章列表,点击标题进详情页。后台管理页面就更糙了,能用就行,反正主要是我自己看。
遇到的一些小坎坷
过程中也遇到不少小问题。
- 富文本编辑器: 纯文本记录肯定不行,有时候需要插个图、列个代码块啥的。我就找了个开源的富文本编辑器集成进来,像*或者CKEditor这种。集成过程还行,但有时候样式会跟我的主题有点冲突,得手动调CSS,挺烦人的。
- 搜索功能: 一开始想简单点,直接用数据库的 `LIKE` 查询。但数据量稍微上来一点,或者搜索复杂一点,效率就惨不忍睹。后来研究了下,考虑过Whoosh这样的全文搜索引擎库,但又觉得为了个小项目上这个有点杀鸡用牛刀,还是优化了下SQL查询,勉强能用。
- 部署: 本地跑起来欢,真要部署到服务器上又是另一回事。什么Nginx配置,Gunicorn启动,还有静态文件路径,来来回回折腾了好几天才算稳定下来。
最终的“kb之家”
折腾了大概一两个月,这个“kb之家”算是勉强能用了。界面嘛也就那样,自己看着不别扭就行。功能上,基本的文章发布、分类、打标签、搜索都有了。我把之前散落在各处的笔记、一些代码片段、还有些想法都慢慢往里搬。
用了一段时间,感觉确实比以前方便了不少。至少想找个东西,直接上去搜一下就行,不用再到处翻文件夹了。虽然它很简单,甚至有点简陋,但毕竟是自己一手搭建起来的,用着也顺手。
后续还想过加些评论、用户系统之类的功能,但精力有限,也就没再继续深入搞下去了。现在它就静静地躺在我的小服务器上,偶尔我还会上去添点东西,或者查查以前记录的笔记。
这回实践过程虽然磕磕绊绊,但也让我把学到的一些零散知识串联起来了,从后端到前端再到部署,整个流程都走了一遍。还是挺有收获的,至少以后再想搞类似的小东西,心里就有底了。
还没有评论,来说两句吧...