更新 应用系统的设计与升级
parent
83f021245c
commit
1f8b6e19b1
|
|
@ -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. 某一个版本的应用(客户端)代码存在致命缺陷,需要强制客户升级。
|
||||
|
||||
|
|
|
|||
Loading…
Reference in New Issue