更新 应用系统的设计与升级

Xu Chang 2025-02-05 18:57:46 +08:00
parent 83f021245c
commit 1f8b6e19b1
1 changed files with 5 additions and 5 deletions

@ -21,24 +21,24 @@
某个应用在初始化时,首先通过调用*getApplication*接口(*src/aspects/application*)去查询确定当前*Application*。其主要依据是*type*和*domain*同时传入当前App的*version*。
### 应用的版本号
应用的Version在打包发布时确定编译器会自动将项目目录下package.json中的version号注入到打包后的文件中以之作为应用的版本号。应用打包后版本号就固定不会改变除非用户升级。
应用的版本号在打包发布时确定编译器会自动将项目目录下package.json中的version号注入到打包后的文件中以之作为应用的版本号。应用打包后版本号就固定不会改变除非用户升级。
```tips
如果在应用开发中需要取当前应用的版本号可以编写一个oakGetPackageJsonVersion函数直接返回任意字符串。oak在前端打包时会自动将package.json中的version注入返回参见src/utils/appVersion.ts
```
# 应用的版本号规则
# 版本号命名规则
Oak框架的前后端代码不分开因此可以很优雅的保持前后端版本的一致性。在应用开发中应遵循node的规定以a.b.c(-extra)的格式来命名package.json中的version属性。其中
Oak框架的前后端代码不分开因此可以很优雅的保持前后端版本的一致性。在开发过程中应遵循node的规定以a.b.c(-extra)的格式来命名package.json中的version属性。其中
* a表示大版本更新数据结构和上一个版本必然不兼容
* b表示版本更新,数据结构和上一个版本不保证兼容
* b表示功能性更新,数据结构和上一个版本不保证兼容
* c表示bug修正数据结构和上一个版本必须兼容
* extra一般用于一些特殊情况比如线上紧急的临时版本
# 线上应用升级策略
在实际线上应用中,有以下两种情况需要处理:
在实际线上应用的生命周期中,有以下两种情况需要处理:
1. 尽管最新版本号中的a或者b已经变更过了但应用客户端的历史版本仍然需要支持不能强制客户升级
2. 某一个版本的应用(客户端)代码存在致命缺陷,需要强制客户升级。