一人全役,本项目由我山左立一人全役,包括 产品 - 原型 - 设计 - 开发。
发在站酷的设计总结以及实机演示动图:地址
技术选型
前端
官方网站:React
+ Ant Design
源码地址
小程序:MPX
(跨端框架,支持微信小程序、支付宝小程序)+ Vant weapp
+ iview weapp
客户端源码地址
后台系统:Vue
+ Ant Design
源码地址
后端RESTful api:FastAPI
源码地址(非完整版,无database config)
MPX
并不是非常成熟的框架,总体开发体验要比 Taro
要好(个人感觉),Taro
的第一步,Taro Cli
就卡住我了,Taro
的 UI
框架里面的组件也有点贫瘠(可能现在更新了就不贫瘠了)。MPX
是滴滴官方出的框架,最让我惊喜的就是,它能同时使用 iview weapp
和 Vant 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演示图
环境
Docker 容器系统: CentOS 7
Nginx 版本:1.16.1
Docker 版本: 19.03.13
老早之前我就想玩 Dokcer
了,这次终于玩上了,Docker
并不是特别难的东西,很多东西都很人性化。就是如果在服务器上写代码会有点麻烦而已,所以后来又去学了 Vim
,现在基本上玩溜了,但是不做笔记还是很容易忘记自己开了什么服务,有次开了多个 screen
,服务器 CPU 飙到了 120%,差点就暴毙了,后面我就不敢打开 code-server
用 iPad 远程连接编程了。
Nginx
的配置也很简单,但是如果不注意隐藏,可能会很容易被人找到后端的 URL
是什么,总而言是,这一套配置还是很容易就能配出来的。
(后端详细🔎 配置说明,外网可访问:地址)
开发心得
这次开发,我学会了一个道理,自己一个人是干不完整个项目的,就算能干成,所消耗的时间也是不成正比的,我个人也极其容易一开始就去斟酌细节,骨架图、错误提醒、选用什么UI框架之类的琐碎问题,而忽略了数据结构、代码风格、是否易维护等等重要问题。但同时,由于一人全役,所获的的知识的量,是平时工作无法比拟的,但压力也是拉满的,所以很多时候会刻意去逃避,不去面对开发中出现的问题。导致后期砍掉了很多重要的功能,还是得合理分配开发任务和开发时间。
感谢你🙏 看到这里,我们下次再见👋 。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。