头图
一人全役,本项目由我山左立一人全役,包括 产品 - 原型 - 设计 - 开发。

发在站酷的设计总结以及实机演示动图:地址

技术选型

前端

官方网站:React + Ant Design 源码地址

小程序:MPX(跨端框架,支持微信小程序、支付宝小程序)+ Vant weapp + iview weapp 客户端源码地址

后台系统:Vue + Ant Design 源码地址

后端RESTful api:FastAPI 源码地址(非完整版,无database config)

MPX 并不是非常成熟的框架,总体开发体验要比 Taro 要好(个人感觉),Taro 的第一步,Taro Cli 就卡住我了,TaroUI 框架里面的组件也有点贫瘠(可能现在更新了就不贫瘠了)。MPX是滴滴官方出的框架,最让我惊喜的就是,它能同时使用 iview weappVant weapp 这两个小程序 UI 框架,这大大丰富了开发者的选择。

MPX的文档也非常完善,只是开发小程序如果使用第三方框架都要狂翻多个框架的开发文档和微信官方的开发文档,不然就会走很多弯路。我就曾经遇到过无法引入 Vant Dialog 的问题,后面发现单纯是因为自己引入方式不对,而滴滴的前端团队效率真的很高,早上发的 issue 下午就回复了(详情🔎

个人是更喜欢Vant weapp 这个 UI 框架的,它的复杂程度也比 iview weapp 稍高,所以我大部分的组件都使用了 Vant weapp

后来我又看到了 Reamx 这个类 React 框架,个人感觉它比 Taro 要简洁,可惜它的 UI 框架更加贫瘠。大概率下一个项目会使用 Remax

附上小程序设计图

小程序设计图

基于 React 的官方没啥可说的,也就是 Flex 布局,没什么技术含量,还是个静态网页。

基于 Vue 的后台系统也没啥可说的,没遇到特别困难的问题。

附上后台系统设计图

后台系统设计图

后端

框架:Python FastAPI(RESTFul API)

数据库:Postgresql 12

Python 操作 PostgreSQL: Psycopg2

Python 虚拟环境管理: Anaconda

当时一心想着使用 RESTFul API,之前也用过 Node,也用过其它 Python 框架 Django / Flask 什么的,但是它俩不完全是 RESTFul API 框架,就全网找,看看有没有别的,就看到了 FastAPI,别提多好用了,官方也更新了中文版,简直太妙了,内置了一堆实用功能,它还有 Pydantic 这个神器。基本上不需要自己定义错误代码、数据验证和设置管理。

整个项目结构可以非常清晰明了,是那种,让人一看就懂结构,代码风格也非常简洁,因为大多数功能已经被封装好了,直接调用即可。

Postgresql 就有点糟心了,我当时看到官方使用的就是这个数据库,就想都没想就用了,后来发现它还有 jsonb 这样的数据格式,使用 Psycopg2 去操作 Postgresql 实在是一言难尽...要想返回键值对数据,根本不需要 json / jsonb 这样的数据格式。仅需要几句代码即可,可我搜了很久都没搜到,不管是GitHub还是stack overflow还是segment还是掘金...当时一度想放弃 Postgresql,后来解决了,就比较舒服了,Postgresql 的读写速度确实很快。总体风格,语义化还是很好懂的。

(另外一些开发笔记在我的掘金账号的沸点里,笔记

附上后端API演示图

后端API演示图

环境

Docker 容器系统: CentOS 7

Nginx 版本:1.16.1

Docker 版本: 19.03.13

老早之前我就想玩 Dokcer 了,这次终于玩上了,Docker 并不是特别难的东西,很多东西都很人性化。就是如果在服务器上写代码会有点麻烦而已,所以后来又去学了 Vim,现在基本上玩溜了,但是不做笔记还是很容易忘记自己开了什么服务,有次开了多个 screen,服务器 CPU 飙到了 120%,差点就暴毙了,后面我就不敢打开 code-server 用 iPad 远程连接编程了。

Nginx 的配置也很简单,但是如果不注意隐藏,可能会很容易被人找到后端的 URL 是什么,总而言是,这一套配置还是很容易就能配出来的。

后端详细🔎 配置说明,外网可访问:地址

开发心得

这次开发,我学会了一个道理,自己一个人是干不完整个项目的,就算能干成,所消耗的时间也是不成正比的,我个人也极其容易一开始就去斟酌细节,骨架图、错误提醒、选用什么UI框架之类的琐碎问题,而忽略了数据结构、代码风格、是否易维护等等重要问题。但同时,由于一人全役,所获的的知识的量,是平时工作无法比拟的,但压力也是拉满的,所以很多时候会刻意去逃避,不去面对开发中出现的问题。导致后期砍掉了很多重要的功能,还是得合理分配开发任务和开发时间。

感谢你🙏 看到这里,我们下次再见👋 。


山左立
25 声望0 粉丝

Palindrome