有些插件写得比较乱,缺乏统一的实践指导。
之前建葵写过一个思路,但还不是很完整,只表达了版本怎么管理:
https://our.ones.pro/wiki/#/team/RDjYMhKq/space/U4DDUdLm/page/63cmn54J
插件迭代产物需要支持以下两点,这样可以保证每个插件版本都支持初装和升级
实现方式:
因为每一次的迭代都是一个确定的版本,所以开发者可以知道所有旧版本升级到当前版本需要处理的逻辑
示例:
// 升级插件到 2.0 版本(历史版本:1.0、1.1)
export async function Upgrade(oldPluginInfo) {
const oldVersion = oldPluginInfo.version;
switch (oldPluginInfo) {
case "1.0":
// 从 1.0 升级到 2.0 版本(需要处理中间版本的所有逻辑)
importSQL("plugin_S2076.sql");
importSQL("plugin_S2077.sql");
break;
case "1.1":
// 从 1.1 升级到 2.0 版本,因为
importSQL("plugin_S2077.sql");
break;
default:
break;
}
}
实现方式:
持续维护 install 方法,每一次迭代都需要重新将最新的表结构写到 install
示例:
// 安装插件
export async function Install() {
// 维护最新的表结构,保证当前版本的代码与初装的表结构兼容
await importSQL("plugin.sql");
await importSQL("plugin_S2076.sql");
await importSQL("plugin_S2077.sql");
}
应该把switch case里面的break去掉,这样版本可以累加。