关于本博客
/ / / 阅读数:1415Frodo
本博客的项目地址在
使用的技术栈为:
- 博客页面 Web 框架:python/fastapi
- 前台 ORM: sqlalchemy + 异步 databases (FastAPI 推荐做法)
- 前台模板: Mako/FastAPI-Mako
- python web 服务: asgi/uvicorn
- 后台 Web 框架: golang/gin
- 后台 ORM: gorm
- 后台 UI: vue-element-admin
- KV 数据库: redis
- 缓存: redis/memcached
- 反向代理: nginx
- 持久化: mysql
- 数据库迁移: alembic
- 认证 JWT
- python 类型检查: pydantic
Features
- 配套后台实现对文章、用户等的增删改查。
- 后台支持 markdown 预览与编辑
- 前端语法高亮、LaTeX 数学公式渲染、目录生成
- 支持文章搜索(模糊)
- 支持 Github 登录进行评论和反馈
- 支持 Hexo 或其他源 mardown 文章批量导入
- 支持个人设置(头像与介绍)
- 定制化导航栏,可以自行定义 page
- 支持文章中渲染 github-cards
- 支持个人「动态」类似知乎想法
- 支持 docker 虚拟化部署
Motivation
为什么现在还要手写博客项目呢,似乎写一个雷课堂更有趣。
还要说回 2016 年 10 月,当时初涉软件开发领域,开始尝试操作云虚拟机,以当时十分流行的 LAMP (Linux-Apache-Mysql-PHP) 的套路搭建了第一个博客项目。当时那个简陋无比的功能和页面仍记忆尤新。后来三年时间都在从事后端工作,差不多能做出的东西都是命令行工具了...
我很羡慕那些能动手实现自己小想法的人,我想开始向全栈迈一小步。此外这次是一次技术特点的新尝试。程序级的异步是很多语言的新特性,从javascript
的promise
对象到Golang
的goroutine
,越来也多的语言开始考虑这种写法。python
也在不断努力,asyncio
生态圈也在不断壮大。尽管在工作中还是更多地选择多线程,但这些关键字很酷不是吗?
此外的原因要归功于去年 python 届的网红 - fastapi 那迷人的文档。他的文档使我迫不及待地想检测这个框架的实用性。
相较于传统的Flask
, Django
框架,本项目在风格上一律采用异步写法,也就是你能看到大量的async
,await
, async with
, async for
等关键字。同时你将不会看到多线程 / 多进程的调用。
经过半个月的实践来看,异步对我而言语法或语言都是次要的,核心是异步的编程思维。
在 ASGI 协议还未正式被接纳时,python 异步框架目前正处在探索期,生态圈很多都需要完善。关于项目的一些细节我会陆续写好文档。
Milestone
- [x] 用户模块及认证模块完成 2020-05-17
- [x] 后台 API 调通 2020-05-20
- [x] 前后台联通 2020-05-24
- [x] 评论模块(Github 认证) 2020-05-27
- [x] Hexo 文章批量迁移 2020-05-28
- [x] 反馈模块 2020-05-29
- [x] 加入缓存(统一用 redis) 2020-05-31 Changed a lot
- [x] 阅读量 (require: cached) 2020-05-31
- [x] 动态模块 (Activity) 最后的功能模块 2020-06-02
- [x] golang 重构后台 API
- [ ] 虚拟化与部署文档
- [] 更换前端 (require: Modify Hexo Theme to Mako)
名称由来:完成此项目时我们正从covid-19
的影响中慢慢走出,人类的历史就是勇气的历史,我将项目命名为Frodo
,来自指环王系列主角,因为春天总会到来,我们会付出勇气,我们终将付出勇气。
太阳回来了,从南回归线
春天回来了,从南中国海