---
title: "「项目实战」基于uni-app和Python flask的校园微信小程序 01.简介"
categories: [ "程序人生","商业项目" ]
tags: [  ]
draft: false
slug: "yiyu-intro"
date: "2021-03-13 12:13:00"
---

团队刚刚成立之初，就接到了一个小项目，甲方要求是制作一个微信小程序，给出了各个模块的介绍，然后由我们自由发挥，只要最后交付时满意就行。

介于甲方隐私，小程序名字暂时隐藏

校园小程序说多不多，说少也不少，现在很多学校都用上了各种各样的便捷小程序，有些学校还开发了APP，大部分的小程序功能都集成了这些功能：`校园外卖` `快递代拿` `课表浏览` `微型教务`等。

**本系列文章为介绍小程序的架构及设计逻辑，是我们的第一个商业项目，难免会有各种疏漏还请各位大佬见谅。另外考虑到客户隐私问题，就不在此放出部分UI截图或代码。**

#### 框架
我们接到这个项目之后，就开始了技术栈的选择，因为是第一次接商业项目，光经验就不谈，技术栈的选择尤为关键，若选择了较为复杂的解决方案，开发周期就会大大加长，到不了甲方的约定交付周期就违约了。在综合考虑之下，因为小程序的体量不大，功能相对来说比较好做，在前端方面不使用原生开发，而是使用`uni-app`这套跨平台的UI库，好处就是开发模式与Vue写web前端十分相似，开发逻辑上也是mvvm和声明式绑定，因为这个库就是用vue做的前端框架。uni-app完成开发后，可以直接打包到H5, iOS, Android, 微信小程序, 支付宝小程序等一系列内置了小程序的平台。

后端的开发，用spring感觉没有必要，毕竟是一个简单的小项目，想起来python对于简单的webapp开发也是十分便捷，然后考虑到交付周期的问题，最后选择了flask作为后端框架进行开发，优点是开发极其便捷，路由管理也十分方便。还有就是因为有课表模块，课表又是从学校的教务系统上爬取的，自然肯定是选择python语言，兼顾了web api和爬虫。

后端数据库用的是mysql 5.7版本，这里会遇到一个小问题就是在获取到用户名之后，要存储到数据库，因为部分用户的微信昵称是带有emoji的，直接用mysql默认编码存不进会报错，因为mysql是四字节编码，所以在建库和建表时要将排序规则改为`utf8mb4_unicode_ci`。

#### 模块
这一次我们开发的校园小程序，从大体模块上分为以下几个

 - 课表浏览
 - 快递代拿
 - 文件代打印
 - 课表提醒
 - 个人中心
  - 地址管理
  - 个人信息管理

下一篇文章将介绍本项目的前端技术