# 多彩校园小程序版

## 项目说明

本项目采用 [Taro](https://taro.aotu.io/) 框架编写小程序，使用 [React](https://reactjs.org/) + [Typescript](http://www.typescriptlang.org/) 语法编写页面逻辑，并编译为小程序代码，项目只为源码部分，上传微信的部分为`./dist/`文件夹下的编译产物。相关文档可自行查阅。

## 安装依赖 & 使用说明

```bash
npm install -g @tarojs/cli        # 安装taro的项目工具
npm install                       # 安装依赖
npm run dev:weapp                 # 启动开发服务 热更新
npm run build:weapp               # 将文件打包到 dist目录下
```

## 目录结构

```bash
| - config                        # 项目打包配置
| - dist                          # 项目打包产物
| - src                           # 项目源码目录
|    | - api                      # 所有请求
|    | - common                   # 部分公用逻辑
|    | - components               # 公用组件
|    | - constants                # 静态变量配置（不同分支配置地址）
|    | - hooks                    # 公用Hooks逻辑
|    | - images                   # 图片静态资源
|    | - pages                    # 小程序页面
|    | - store                    # 全局的状态管理 redux
|    | - types                    # 类型定义
|    | - utils                    # 工具函数
|    | - app.scss                 # 全局公共样式
|    | - app.tsx                  # 项目入口
| - project.config.json           # 微信开发相关配置
| - tsconfig.json                 # typescript配置
```

项目基本按照 React 的项目框架完成。路由注册在`app.tsx`中的`config`内注册`pages`即可。

## 微信登录流程

每次进入小程序，获取用户 code 后，请求登录接口获取用户信息以及请求 token，在之后的所有请求中将 token 加入请求的 header。

附微信登录流程：
![Image 微信登录流程](https://res.wx.qq.com/wxdoc/dist/assets/img/api-login.2fcc9f35.jpg)
