Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

基于Taro+React的小程序架构说明 #34

Open
mominger opened this issue Jun 18, 2021 · 0 comments
Open

基于Taro+React的小程序架构说明 #34

mominger opened this issue Jun 18, 2021 · 0 comments

Comments

@mominger
Copy link
Owner

mominger commented Jun 18, 2021

项目架构图

jiagou

基于Taro框架 React 语法进行研发
不支持路由拦截,也不支持axios/fetch,因此封装了路由和http库
本项目当前仅支持小程序
下面针对架构的各层进行阐述

1. Confluence/Swagger

后台提供接口文档后,用Postman进行调试

2. Network请求和Service处理

2.1 Newwork

2.2 view端代码

通过页面根组件Page自动调用store.onLoad(action)
或页面通过store.action 去调用api
具体参考pages/test/home/index.tsx

2.3 page store代码

store_action
page_api

具体参考 store/home

2.4 http.ts代码

req_1
req_2

具体参考 bit-kit/http
mobx构建store,相当于页面model层,由model层去负责api的调用
相比redux(dispatch(action) -> reducer -> new state)的流程,mobx的store 类看上去自然简洁;另外redux 需要依赖中间件,如通过插件redux-thunk才能call api,mobx则无此限制;最后redux更新组件需通过store.subscribe 异步获取,mobx是同步响应式更新。以上是将redux换成mobx的原因。

3. Utils

biz-kit 包下 放了很多辅助性的JS类

3.1 内容

util_bao

3.2 国际化

guojihua

3.3 toast封装

toast_fengzhuang

3.4 用户公共信息

use_info

其他请查看 biz-kit下的代码

4. 页面容器

页面都放在pages下,公共的UI组件放在ui-kit下

4.1 ui-kit

ui-kit目录

4.1.1 page 根组件

page_root

抽取根组件,是为了复用所有页面的一些通用逻辑。比如会自动处理所有页面store的初始化 onLoad、卸载onUnload.
其他请查看 ui-kit下的代码

4.2 Router

目前仅把路由封装在 /biz-kit/nav下,未做扩展,为将来需做路由鉴权时预留位置。

route_address

4.3 mobx 状态管理

4.3.1 定义store

define_store

响应式变量、初始化action onLoad、卸载action onUnload、其他action、computed变量

4.3.2 store注入页面

store_page

注入后通过store.xxx 调用
代码在 pages/test/home

5.UI组件库

目前市面上的组件库有: uniapp 的uni-ui,Taro的 taro-ui,微信小程序的WeUI,以及跨Vue/React/Mini Program的 vant组件。其中vant组件最丰富,使用最广泛。WeUI虽然是官方推出,但更多偏向于展示类的组件。
因此引入了vant。
官网vant-weapp
参考Taro引入vant的文章

5.1 使用例子

vant_example

建议运行看看效果。可以基于vant做样式调整,构建一套组件库。

6.编译打包

6.1 配置项

webpack_peizhi

基于webpack
参考配置项说明
通过webpackChain可以更改webpack配置

6.2 运行配置项

run_config

目前有dev、prd环境,如有必要,可以拓展

7,日志记录

Taro糅合了小程序、React 2套生命周期,因此需对他们进行异常统一捕获,并上传日志

7.1 捕获小程序异常

xiaochengxu_log

7.2 捕获React异常

react_log

7.3 日志上传

onload_log

目前异常日志统一收集到 biz-kit/log后,只是打印到控制台,正常应上传到日志平台,如Sentry。
注意: Promise等异步异常需要try...catch自行捕获

8.其他

@mominger mominger transferred this issue from another repository Mar 9, 2022
@mominger mominger changed the title 基于Taro的小程序架构说明(20210617) 基于React+Taro的小程序架构说明(20210617) Mar 11, 2022
@mominger mominger changed the title 基于React+Taro的小程序架构说明(20210617) 基于Taro+React的小程序架构说明(20210617) Mar 11, 2022
@mominger mominger changed the title 基于Taro+React的小程序架构说明(20210617) 基于Taro+React的小程序架构说明 Mar 22, 2022
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

1 participant