【关键字】
构建跨动态库的单例 / globalThis变量
【问题描述】
在构建跨动态库是如下实现的:
-
创建一个静态库 SingletonModel,提供一个单例对象。
-
创建一个动态库 DynamicLib,并依赖静态库 SingletonModel,并提供一个方法调用 SingletonModel 的单例对象
-
entry同时依赖 SingletonModel 和 DynamicLib。
遇到问题如下:
直接调用 SingletonModel 的单例,和通过DynamicLib调用的 SingletonModel 的单例是两个对象问题,那么如何构造一个单例,让其经过动态库后不会生成额外的对象呢?
【解决方案】
使用globalThis变量调整单例的创建模式。
代码参考:
export class CYSingleton {
/* 单例配置 */
public static shared(): CYSingleton {
if (!globalThis.sharedSingleton) {
globalThis.sharedSingleton = new CYSingleton();
}
return globalThis.sharedSingleton
}
}