前端
- 由于没有seo等其他首屏需求,采用简单的spa页面进行开发。
- 利用 umi 框架,快速搭建项目,并管理前端路由。
- 利用 ESLint + Prettier 进行代码格式规范以及格式检测。
- 利用 commitlint 进行代码提交信息的规范。
- 利用 githook 进行上述两项的校验。
- 利用 TypeScript 保证代码可靠性、易读性、可维护、可重构。
- 利用 Antd 快速实现ui。
后端
- 采用 koa 框架,轻量,简单,可扩展性强。
- 采用 websocket 全双工通信,保证聊天室的信息同步。
数据库
- 采用 sqlite,操作简单,轻量,且不需要服务,只需要相应的驱动。
- 只进行用户名和密码的存取。
自动构建项目 (实现自动化构建和部署)
- 没有采用市面上类似Jenkins的ci工具,本来想自己尝试进行了一个简单服务的编写,但最终实现也没有过多设计,仅针对项目中的前端和后端。
- 采用 execa 调用服务器的shell,支持多操作系统。
- 采用 ora 进行日志的打印,界面优美。
- 采用 string-random 进行dockerName的生成,保证docker构建以及停止命令的执行。
注册、登录、群体聊天室、脏词过滤、github push监听,自动打包发布流程
DFA算法 实现脏词过滤的判断。
- 进行账户注册。
- 注册成功后会回到登陆页面,在进行登录。
- 登录成功后会直接进入到聊天室,可以进行聊天。
前端:
- nginx 进行单页项目的托管,并利用 try_files 保证页面刷新后依然能够访问
- github 配置 webhook ,通知到远程服务器中的自动构建服务。
后端:
- 利用 docker 进行后端服务的镜像构建以及发布。
- github 配置 webhook ,通知到远程服务器中的自动构建服务。
自动构建项目
- 利用 pm2 进行服务的启动。
- 服务中监听 github 中的 webhook 请求,进行对应服务代码个更新以及服务重启。
-
后端服务器暂时都没有进行压测,具体性能不清楚。
-
前端页面后续可在部署上进行浏览器缓存以及cdn静态资源的缓存设置在网络上进行优化。运行时的内存由于本身功能不多,并没有做针对性处理。
-
后续可以在产品上增加单对单以及多个群聊组织的功能,现在只有一个统一的聊天室。
-
自动构建服务后续以脚本的形式驱动构建和打包,保证服务的稳定性。(这一条做的时候忘记了,写文档的时候才意识到服务中去管理增大了服务的压力。)
- 无法采用githubpage的页面,因为个人服务器没有域名,无法申请免费的ssl,现在去申请域名也来不及了,最终放弃利用githubpage,全部都部署在个人服务器中。