@blueking/bk-weweb 0.0.34 → 0.0.35-beta.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/index.d.mts +820 -103
- package/dist/index.esm.js +1778 -941
- package/dist/index.esm.js.map +1 -1
- package/package.json +1 -1
package/dist/index.d.mts
CHANGED
|
@@ -1,8 +1,12 @@
|
|
|
1
|
+
type ExecuteResult = Comment | HTMLScriptElement | undefined;
|
|
2
|
+
/**
|
|
3
|
+
* Script脚本实例类
|
|
4
|
+
*/
|
|
1
5
|
declare class Script {
|
|
2
6
|
async: boolean;
|
|
3
7
|
code: string;
|
|
4
8
|
defer: boolean;
|
|
5
|
-
exportInstance?:
|
|
9
|
+
exportInstance?: unknown;
|
|
6
10
|
fromHtml: boolean;
|
|
7
11
|
initial: boolean;
|
|
8
12
|
isModule: boolean;
|
|
@@ -10,18 +14,35 @@ declare class Script {
|
|
|
10
14
|
url: string | undefined;
|
|
11
15
|
constructor({ async, code, defer, fromHtml, initial, isModule, url }: IScriptOption);
|
|
12
16
|
/**
|
|
13
|
-
*
|
|
17
|
+
* 执行脚本代码
|
|
18
|
+
* @param app 应用实例
|
|
14
19
|
* @param needReplaceScriptElement 是否需要替换script标签
|
|
15
20
|
* @returns 返回执行后的script标签或注释
|
|
16
21
|
*/
|
|
17
|
-
executeCode(app: BaseModel, needReplaceScriptElement?: boolean): Promise<
|
|
22
|
+
executeCode(app: BaseModel, needReplaceScriptElement?: boolean): Promise<ExecuteResult>;
|
|
23
|
+
/**
|
|
24
|
+
* 内存脚本执行
|
|
25
|
+
*/
|
|
18
26
|
executeMemoryScript(app: BaseModel, scopedCode: string): void;
|
|
27
|
+
/**
|
|
28
|
+
* 脚本标签执行
|
|
29
|
+
*/
|
|
19
30
|
executeSourceScript(scriptElement: HTMLScriptElement, scopedCode: string): void;
|
|
31
|
+
/**
|
|
32
|
+
* 获取脚本内容
|
|
33
|
+
*/
|
|
20
34
|
getCode(app?: BaseModel): Promise<string>;
|
|
21
35
|
setCode(code: string): void;
|
|
36
|
+
/**
|
|
37
|
+
* 转换脚本内容
|
|
38
|
+
*/
|
|
22
39
|
transformCode(app: BaseModel): string;
|
|
23
40
|
}
|
|
24
41
|
|
|
42
|
+
type PackRuleType = CSSMediaRule | CSSSupportsRule;
|
|
43
|
+
/**
|
|
44
|
+
* 样式处理类
|
|
45
|
+
*/
|
|
25
46
|
declare class Style {
|
|
26
47
|
code: string;
|
|
27
48
|
fromHtml: boolean;
|
|
@@ -33,90 +54,337 @@ declare class Style {
|
|
|
33
54
|
url: string | undefined;
|
|
34
55
|
constructor({ code, fromHtml, initial, prefetch, preload, url }: IStyleOption);
|
|
35
56
|
/**
|
|
36
|
-
*
|
|
57
|
+
* 通用样式作用域处理
|
|
58
|
+
* @param styleElement 样式元素
|
|
37
59
|
* @param app 应用实例
|
|
38
60
|
*/
|
|
39
61
|
commonScoped(styleElement: HTMLStyleElement, app: BaseModel): void;
|
|
62
|
+
/**
|
|
63
|
+
* 创建样式元素
|
|
64
|
+
*/
|
|
40
65
|
createStyleElement(): HTMLStyleElement;
|
|
41
66
|
/**
|
|
67
|
+
* 执行样式代码
|
|
42
68
|
* @param app 应用实例
|
|
43
69
|
* @returns 返回执行后的style标签
|
|
44
70
|
*/
|
|
45
71
|
executeCode(app: BaseModel): Promise<HTMLStyleElement>;
|
|
72
|
+
/**
|
|
73
|
+
* 获取样式代码
|
|
74
|
+
*/
|
|
46
75
|
getCode(app?: BaseModel): Promise<string>;
|
|
76
|
+
/**
|
|
77
|
+
* 检查并链接基础应用样式
|
|
78
|
+
* @param styleElement 样式元素
|
|
79
|
+
* @param app 应用实例
|
|
80
|
+
* @returns 是否已链接基础样式
|
|
81
|
+
*/
|
|
47
82
|
linkedBaseStyle(styleElement: HTMLStyleElement, app: BaseModel): boolean;
|
|
48
|
-
|
|
83
|
+
/**
|
|
84
|
+
* 重置包装规则
|
|
85
|
+
*/
|
|
86
|
+
resetPackRule(rule: PackRuleType, prefix: string, packName: string): string;
|
|
87
|
+
/**
|
|
88
|
+
* 重置URL地址
|
|
89
|
+
*/
|
|
49
90
|
resetUrlHost(cssText: string, uri: string, linkPath?: string): string;
|
|
91
|
+
/**
|
|
92
|
+
* css rule 处理
|
|
93
|
+
*/
|
|
50
94
|
scopeRule(rules: CSSRule[], cssPrefix: string): string;
|
|
95
|
+
/**
|
|
96
|
+
* style rule 处理
|
|
97
|
+
*/
|
|
51
98
|
scopeStyleRule(rule: CSSStyleRule, prefix: string): string;
|
|
99
|
+
/**
|
|
100
|
+
* link style 处理
|
|
101
|
+
*/
|
|
52
102
|
scopedLinkCSS(app: BaseModel, linkElement: HTMLLinkElement): HTMLStyleElement;
|
|
103
|
+
/**
|
|
104
|
+
* 隔离 style
|
|
105
|
+
*/
|
|
53
106
|
scopedStyleCSS(app: BaseModel, styleElement: HTMLStyleElement): HTMLStyleElement;
|
|
107
|
+
/**
|
|
108
|
+
* 应用隔离 style
|
|
109
|
+
*/
|
|
110
|
+
private applyScopedCSS;
|
|
111
|
+
private applyUnscopedCSS;
|
|
112
|
+
/**
|
|
113
|
+
* 处理ShadowRoot中的字体
|
|
114
|
+
*/
|
|
115
|
+
private handleShadowRootFonts;
|
|
116
|
+
private getCodeFromAppSource;
|
|
117
|
+
private getCodeFromCache;
|
|
118
|
+
private fetchCodeFromRemote;
|
|
119
|
+
private clearStyleElement;
|
|
120
|
+
private buildBaseURI;
|
|
121
|
+
private handleExistingCode;
|
|
122
|
+
/**
|
|
123
|
+
* 处理href属性
|
|
124
|
+
*/
|
|
125
|
+
private handleHrefAttribute;
|
|
126
|
+
/**
|
|
127
|
+
* 处理缺失的href
|
|
128
|
+
*/
|
|
129
|
+
private handleMissingHref;
|
|
130
|
+
private processExistingContent;
|
|
131
|
+
private observeContentChanges;
|
|
54
132
|
}
|
|
55
133
|
|
|
134
|
+
/**
|
|
135
|
+
* 应用缓存管理器
|
|
136
|
+
* @description 负责管理所有微应用实例的缓存、资源共享和状态跟踪
|
|
137
|
+
*/
|
|
56
138
|
declare class AppCache {
|
|
57
|
-
|
|
58
|
-
private
|
|
139
|
+
/** 基础资源源,用于主应用共享资源包 */
|
|
140
|
+
private readonly baseSource;
|
|
141
|
+
/** 应用实例缓存映射表 */
|
|
142
|
+
private readonly cache;
|
|
143
|
+
/**
|
|
144
|
+
* 构造函数
|
|
145
|
+
* @description 初始化应用缓存管理器
|
|
146
|
+
*/
|
|
59
147
|
constructor();
|
|
60
|
-
|
|
148
|
+
/**
|
|
149
|
+
* 设置应用实例到缓存
|
|
150
|
+
* @description 将应用实例添加到缓存中,使用应用的缓存键作为标识
|
|
151
|
+
* @param app - 要缓存的应用实例
|
|
152
|
+
* @returns void
|
|
153
|
+
*/
|
|
154
|
+
setApp(app: BaseModel): void;
|
|
155
|
+
/**
|
|
156
|
+
* 获取缓存的应用实例
|
|
157
|
+
* @description 根据名称或ID获取已缓存的应用实例
|
|
158
|
+
* @param name - 应用名称或ID,为空时返回 undefined
|
|
159
|
+
* @returns BaseModel | undefined - 应用实例或 undefined
|
|
160
|
+
*/
|
|
61
161
|
getApp(name?: null | string): BaseModel | undefined;
|
|
62
|
-
|
|
162
|
+
/**
|
|
163
|
+
* 删除缓存的应用实例
|
|
164
|
+
* @description 从缓存中移除指定URL的应用实例
|
|
165
|
+
* @param url - 要删除的应用URL标识
|
|
166
|
+
* @returns void
|
|
167
|
+
*/
|
|
168
|
+
deleteApp(url: string): void;
|
|
169
|
+
/**
|
|
170
|
+
* 获取缓存的HTML内容
|
|
171
|
+
* @description 根据URL获取已缓存的HTML内容
|
|
172
|
+
* @param url - 应用的URL
|
|
173
|
+
* @returns string - HTML内容,未找到时返回空字符串
|
|
174
|
+
*/
|
|
63
175
|
getCacheHtml(url: string): string;
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
176
|
+
/**
|
|
177
|
+
* 设置基础应用脚本
|
|
178
|
+
* @description 将脚本添加到基础资源源中,供多个应用共享
|
|
179
|
+
* @param url - 脚本的URL
|
|
180
|
+
* @param script - 脚本实例
|
|
181
|
+
* @returns void
|
|
182
|
+
*/
|
|
67
183
|
setBaseAppScript(url: string, script: Script): void;
|
|
184
|
+
/**
|
|
185
|
+
* 获取缓存的脚本资源
|
|
186
|
+
* @description 从基础资源源或应用缓存中获取脚本资源
|
|
187
|
+
* @param url - 脚本的URL
|
|
188
|
+
* @returns Script | undefined - 脚本实例或 undefined
|
|
189
|
+
*/
|
|
190
|
+
getCacheScript(url: string): Script | undefined;
|
|
191
|
+
/**
|
|
192
|
+
* 设置基础应用样式
|
|
193
|
+
* @description 将样式添加到基础资源源中,供多个应用共享
|
|
194
|
+
* @param url - 样式的URL
|
|
195
|
+
* @param style - 样式实例
|
|
196
|
+
* @returns void
|
|
197
|
+
*/
|
|
68
198
|
setBaseAppStyle(url: string, style: Style): void;
|
|
199
|
+
/**
|
|
200
|
+
* 获取基础应用样式
|
|
201
|
+
* @description 从基础资源源中获取样式资源
|
|
202
|
+
* @param urlOrCode - 样式的URL或代码
|
|
203
|
+
* @returns Style | undefined - 样式实例或 undefined
|
|
204
|
+
*/
|
|
205
|
+
getBaseAppStyle(urlOrCode: string): Style | undefined;
|
|
206
|
+
/**
|
|
207
|
+
* 获取缓存的样式资源
|
|
208
|
+
* @description 从基础资源源或应用缓存中获取样式资源
|
|
209
|
+
* @param url - 样式的URL
|
|
210
|
+
* @returns Style | undefined - 样式实例或 undefined
|
|
211
|
+
*/
|
|
212
|
+
getCacheStyle(url: string): Style | undefined;
|
|
213
|
+
/**
|
|
214
|
+
* 检查是否存在活跃的应用
|
|
215
|
+
* @description 判断当前是否有处于非卸载状态的应用实例
|
|
216
|
+
* @returns boolean - 存在活跃应用时返回 true
|
|
217
|
+
*/
|
|
69
218
|
get hasActiveApp(): boolean;
|
|
70
219
|
}
|
|
71
220
|
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
221
|
+
/**
|
|
222
|
+
* 应用状态常量
|
|
223
|
+
* 定义微前端应用的生命周期状态
|
|
224
|
+
*/
|
|
225
|
+
declare const AppState: {
|
|
226
|
+
/** 未设置状态 */
|
|
227
|
+
readonly UNSET: "UNSET";
|
|
228
|
+
/** 加载中 */
|
|
229
|
+
readonly LOADING: "LOADING";
|
|
230
|
+
/** 加载完成 */
|
|
231
|
+
readonly LOADED: "LOADED";
|
|
232
|
+
/** 挂载中 */
|
|
233
|
+
readonly MOUNTING: "MOUNTING";
|
|
234
|
+
/** 挂载完成 */
|
|
235
|
+
readonly MOUNTED: "MOUNTED";
|
|
236
|
+
/** 激活状态 */
|
|
237
|
+
readonly ACTIVATED: "ACTIVATED";
|
|
238
|
+
/** 未激活状态 */
|
|
239
|
+
readonly DEACTIVATED: "DEACTIVATED";
|
|
240
|
+
/** 卸载状态 */
|
|
241
|
+
readonly UNMOUNT: "UNMOUNT";
|
|
242
|
+
/** 错误状态 */
|
|
243
|
+
readonly ERROR: "ERROR";
|
|
244
|
+
};
|
|
245
|
+
type KeyOfAppState = keyof typeof AppState;
|
|
246
|
+
type ValueOfAppState = (typeof AppState)[KeyOfAppState];
|
|
83
247
|
|
|
248
|
+
/**
|
|
249
|
+
* BK WEWEB 支持的自定义属性枚举
|
|
250
|
+
* @description 定义了 bk-weweb 自定义元素支持的所有属性配置
|
|
251
|
+
*/
|
|
84
252
|
declare enum WewebCustomAttrs {
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
253
|
+
/** 传递给子应用的数据 */
|
|
254
|
+
data = "data",
|
|
255
|
+
/** 应用唯一标识符 */
|
|
256
|
+
id = "id",
|
|
257
|
+
/** 是否启用缓存模式 */
|
|
258
|
+
keepAlive = "keepAlive",
|
|
259
|
+
/** 应用运行模式 */
|
|
260
|
+
mode = "mode",
|
|
261
|
+
/** 是否开启 CSS 样式隔离 */
|
|
262
|
+
scopeCss = "scopeCss",
|
|
263
|
+
/** 是否开启 JavaScript 隔离 */
|
|
264
|
+
scopeJs = "scopeJs",
|
|
265
|
+
/** 是否开启 location 路由隔离 */
|
|
266
|
+
scopeLocation = "scopeLocation",
|
|
267
|
+
/** 是否启用 Shadow DOM */
|
|
268
|
+
setShodowDom = "setShodowDom",
|
|
269
|
+
/** 是否显示源码 */
|
|
270
|
+
showSourceCode = "showSourceCode",
|
|
271
|
+
/** 应用资源 URL */
|
|
94
272
|
url = "url"
|
|
95
273
|
}
|
|
96
274
|
|
|
275
|
+
type FakeWindow = Window & Record<string, unknown>;
|
|
276
|
+
|
|
277
|
+
/**
|
|
278
|
+
* 微前端沙箱实现类
|
|
279
|
+
* @description 提供应用间的环境隔离,防止全局变量污染,支持多应用并存运行
|
|
280
|
+
*/
|
|
97
281
|
declare class SandBox {
|
|
98
|
-
app: BaseModel;
|
|
282
|
+
readonly app: BaseModel;
|
|
283
|
+
/** 沙箱激活状态标识 */
|
|
99
284
|
private active;
|
|
100
|
-
|
|
285
|
+
/** 记录在原始 window 上新增的属性键集合 */
|
|
286
|
+
private readonly inRawWindowKeySet;
|
|
287
|
+
/** 重置文档和 body 事件的函数 */
|
|
101
288
|
private resetDocumentAndBodyEvent?;
|
|
102
|
-
|
|
103
|
-
private
|
|
104
|
-
|
|
289
|
+
/** 重置 window 函数的方法 */
|
|
290
|
+
private readonly resetWindowFunction;
|
|
291
|
+
/** 记录与原始 window 相同的属性键集合 */
|
|
292
|
+
private readonly sameRawWindowKeySet;
|
|
293
|
+
/** 伪造的 window 对象 */
|
|
294
|
+
readonly fakeWindow: FakeWindow & IInjectWindowAttrs;
|
|
295
|
+
/** 代理的 document 对象 */
|
|
105
296
|
proxyDocument: any;
|
|
106
|
-
|
|
297
|
+
/** 代理的 window 对象 */
|
|
298
|
+
readonly proxyWindow: WindowProxy & IInjectWindowAttrs;
|
|
299
|
+
/** 原始 document 对象 */
|
|
107
300
|
rawDocument: Record<string, any>;
|
|
108
|
-
|
|
109
|
-
|
|
301
|
+
/** 原始 window 对象 */
|
|
302
|
+
readonly rawWindow: Window;
|
|
303
|
+
/** 在 window 上的唯一标识键 */
|
|
304
|
+
readonly windowSymbolKey: keyof Window;
|
|
305
|
+
/**
|
|
306
|
+
* 构造函数
|
|
307
|
+
* @description 初始化沙箱环境,创建代理对象和隔离机制
|
|
308
|
+
* @param app - 关联的微应用实例
|
|
309
|
+
*/
|
|
110
310
|
constructor(app: BaseModel);
|
|
111
311
|
/**
|
|
112
|
-
*
|
|
113
|
-
* @
|
|
114
|
-
* @
|
|
312
|
+
* 处理代理对象的 get 操作
|
|
313
|
+
* @description 统一处理代理对象属性获取的复杂逻辑
|
|
314
|
+
* @param target - 目标对象
|
|
315
|
+
* @param key - 属性键
|
|
316
|
+
* @param rawWindow - 原始 window 对象
|
|
317
|
+
* @returns unknown - 属性值
|
|
318
|
+
* @private
|
|
319
|
+
*/
|
|
320
|
+
private handleProxyGet;
|
|
321
|
+
/**
|
|
322
|
+
* 处理代理对象的 set 操作
|
|
323
|
+
* @description 统一处理代理对象属性设置的复杂逻辑
|
|
324
|
+
* @param target - 目标对象
|
|
325
|
+
* @param key - 属性键
|
|
326
|
+
* @param value - 属性值
|
|
327
|
+
* @param rawWindow - 原始 window 对象
|
|
328
|
+
* @returns boolean - 设置是否成功
|
|
329
|
+
* @private
|
|
330
|
+
*/
|
|
331
|
+
private handleProxySet;
|
|
332
|
+
/**
|
|
333
|
+
* 判断是否应该使用 iframe 的 location
|
|
334
|
+
* @description 检查是否在 iframe 模式下访问 location 相关属性
|
|
335
|
+
* @param key - 属性键
|
|
336
|
+
* @returns boolean - 是否使用 iframe location
|
|
337
|
+
* @private
|
|
338
|
+
*/
|
|
339
|
+
private shouldUseIframeLocation;
|
|
340
|
+
/**
|
|
341
|
+
* 创建 getComputedStyle 方法的代理
|
|
342
|
+
* @description 为 getComputedStyle 方法创建安全的代理实现
|
|
343
|
+
* @param rawWindow - 原始 window 对象
|
|
344
|
+
* @returns Function - 代理后的 getComputedStyle 方法
|
|
345
|
+
* @private
|
|
346
|
+
*/
|
|
347
|
+
private createGetComputedStyleProxy;
|
|
348
|
+
/**
|
|
349
|
+
* 判断是否应该在目标对象上设置属性
|
|
350
|
+
* @description 检查属性设置的逻辑条件
|
|
351
|
+
* @param target - 目标对象
|
|
352
|
+
* @param key - 属性键
|
|
353
|
+
* @param rawWindow - 原始 window 对象
|
|
354
|
+
* @returns boolean - 是否在目标对象上设置
|
|
355
|
+
* @private
|
|
356
|
+
*/
|
|
357
|
+
private shouldSetOnTarget;
|
|
358
|
+
/**
|
|
359
|
+
* 在目标对象上设置属性
|
|
360
|
+
* @description 安全地在目标对象上设置属性,保持描述符特性
|
|
361
|
+
* @param target - 目标对象
|
|
362
|
+
* @param key - 属性键
|
|
363
|
+
* @param value - 属性值
|
|
364
|
+
* @param rawWindow - 原始 window 对象
|
|
365
|
+
* @private
|
|
366
|
+
*/
|
|
367
|
+
private setPropertyOnTarget;
|
|
368
|
+
/**
|
|
369
|
+
* 处理白名单属性
|
|
370
|
+
* @description 处理需要在原始 window 上设置的白名单属性
|
|
371
|
+
* @param key - 属性键
|
|
372
|
+
* @param value - 属性值
|
|
373
|
+
* @param rawWindow - 原始 window 对象
|
|
374
|
+
* @private
|
|
375
|
+
*/
|
|
376
|
+
private handleWhiteListProperty;
|
|
377
|
+
/**
|
|
378
|
+
* 激活沙箱
|
|
379
|
+
* @description 启动沙箱环境,初始化代理对象和事件处理
|
|
380
|
+
* @param data - 传递给沙箱的数据(可选)
|
|
381
|
+
* @returns void
|
|
115
382
|
*/
|
|
116
383
|
activated(data?: Record<string, unknown>): void;
|
|
117
384
|
/**
|
|
118
|
-
*
|
|
119
|
-
* @description
|
|
385
|
+
* 停用沙箱
|
|
386
|
+
* @description 关闭沙箱环境,清理所有副作用和修改
|
|
387
|
+
* @returns void
|
|
120
388
|
*/
|
|
121
389
|
deactivated(): void;
|
|
122
390
|
}
|
|
@@ -124,9 +392,14 @@ declare class SandBox {
|
|
|
124
392
|
type SourceFuncType = () => Promise<string[]>;
|
|
125
393
|
type SourceType = SourceFuncType | string[];
|
|
126
394
|
|
|
395
|
+
type ContainerType$2 = HTMLElement | ShadowRoot;
|
|
396
|
+
type AppCallback = (app: BaseModel) => void;
|
|
397
|
+
/**
|
|
398
|
+
* BK-WEWEB 微微应用模式类
|
|
399
|
+
*/
|
|
127
400
|
declare class MicroAppModel implements BaseModel {
|
|
128
401
|
private state;
|
|
129
|
-
container?:
|
|
402
|
+
container?: ContainerType$2;
|
|
130
403
|
data: Record<string, unknown>;
|
|
131
404
|
iframe: HTMLIFrameElement | null;
|
|
132
405
|
initSource: SourceType;
|
|
@@ -142,22 +415,106 @@ declare class MicroAppModel implements BaseModel {
|
|
|
142
415
|
showSourceCode: boolean;
|
|
143
416
|
source?: EntrySource;
|
|
144
417
|
url: string;
|
|
145
|
-
constructor(props:
|
|
146
|
-
|
|
418
|
+
constructor(props: IAppModelProps);
|
|
419
|
+
/**
|
|
420
|
+
* 激活微应用
|
|
421
|
+
*/
|
|
422
|
+
activated(container: ContainerType$2, callback?: AppCallback): void;
|
|
423
|
+
/**
|
|
424
|
+
* 创建隔离iframe
|
|
425
|
+
*/
|
|
147
426
|
createIframe(): Promise<HTMLIFrameElement>;
|
|
427
|
+
/**
|
|
428
|
+
* 停用微应用
|
|
429
|
+
*/
|
|
148
430
|
deactivated(): void;
|
|
431
|
+
/**
|
|
432
|
+
* 初始化ShadowRoot容器
|
|
433
|
+
*/
|
|
149
434
|
initShadowRootContainer(): void;
|
|
150
|
-
|
|
435
|
+
/**
|
|
436
|
+
* 挂载微应用
|
|
437
|
+
*/
|
|
438
|
+
mount(container?: ContainerType$2, callback?: AppCallback): void;
|
|
439
|
+
/**
|
|
440
|
+
* 错误处理
|
|
441
|
+
*/
|
|
151
442
|
onError(): void;
|
|
443
|
+
/**
|
|
444
|
+
* 挂载处理
|
|
445
|
+
*/
|
|
152
446
|
onMount(): void;
|
|
447
|
+
/**
|
|
448
|
+
* 注册运行中的微应用
|
|
449
|
+
*/
|
|
153
450
|
registerRunningApp(): void;
|
|
451
|
+
/**
|
|
452
|
+
* 启动微应用
|
|
453
|
+
*/
|
|
154
454
|
start(): Promise<void>;
|
|
455
|
+
/**
|
|
456
|
+
* 卸载微应用
|
|
457
|
+
*/
|
|
155
458
|
unmount(needDestroy?: boolean): void;
|
|
459
|
+
/**
|
|
460
|
+
* 获取微应用缓存键
|
|
461
|
+
*/
|
|
156
462
|
get appCacheKey(): string;
|
|
157
|
-
|
|
158
|
-
|
|
463
|
+
/**
|
|
464
|
+
* 获取微应用状态
|
|
465
|
+
*/
|
|
466
|
+
get status(): ValueOfAppState;
|
|
467
|
+
/**
|
|
468
|
+
* 设置微应用状态
|
|
469
|
+
*/
|
|
470
|
+
set status(value: ValueOfAppState);
|
|
471
|
+
/**
|
|
472
|
+
* 初始化沙盒
|
|
473
|
+
*/
|
|
474
|
+
private initializeSandBox;
|
|
475
|
+
/**
|
|
476
|
+
* 设置容器属性
|
|
477
|
+
*/
|
|
478
|
+
private setContainerAttribute;
|
|
479
|
+
/**
|
|
480
|
+
* 转移节点到新容器
|
|
481
|
+
*/
|
|
482
|
+
private transferNodes;
|
|
483
|
+
/**
|
|
484
|
+
* 设置节点属性
|
|
485
|
+
*/
|
|
486
|
+
private setupNodeProperties;
|
|
487
|
+
/**
|
|
488
|
+
* 创建iframe元素
|
|
489
|
+
*/
|
|
490
|
+
private createIframeElement;
|
|
491
|
+
/**
|
|
492
|
+
* 构建iframe的src地址
|
|
493
|
+
*/
|
|
494
|
+
private buildIframeSrc;
|
|
495
|
+
/**
|
|
496
|
+
* 检查是否为Chrome用户代理
|
|
497
|
+
*/
|
|
498
|
+
private isChromeUserAgent;
|
|
499
|
+
/**
|
|
500
|
+
* 处理非Chrome浏览器的iframe
|
|
501
|
+
*/
|
|
502
|
+
private handleNonChromeIframe;
|
|
503
|
+
/**
|
|
504
|
+
* 渲染微应用内容
|
|
505
|
+
*/
|
|
506
|
+
private renderAppContent;
|
|
507
|
+
/**
|
|
508
|
+
* 检查是否需要重新加载
|
|
509
|
+
*/
|
|
510
|
+
private needsReload;
|
|
159
511
|
}
|
|
160
512
|
|
|
513
|
+
interface CollectResult {
|
|
514
|
+
replace: Comment | Element;
|
|
515
|
+
style?: Style;
|
|
516
|
+
script?: Script;
|
|
517
|
+
}
|
|
161
518
|
declare class EntrySource {
|
|
162
519
|
url: string;
|
|
163
520
|
html: HTMLElement | null;
|
|
@@ -165,82 +522,256 @@ declare class EntrySource {
|
|
|
165
522
|
scripts: Map<string, Script>;
|
|
166
523
|
styles: Map<string, Style>;
|
|
167
524
|
constructor(url: string);
|
|
168
|
-
|
|
525
|
+
/**
|
|
526
|
+
* 收集链接元素
|
|
527
|
+
*/
|
|
528
|
+
collectLink: (link: HTMLLinkElement, parent: Node, needReplaceElement?: boolean) => {
|
|
169
529
|
replace: Comment | Element;
|
|
170
530
|
style?: Style;
|
|
171
531
|
};
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
532
|
+
/**
|
|
533
|
+
* 收集脚本元素
|
|
534
|
+
*/
|
|
535
|
+
collectScript: (script: HTMLScriptElement, parent: Node, needReplaceElement?: boolean) => CollectResult | undefined;
|
|
536
|
+
/**
|
|
537
|
+
* 收集样式和脚本
|
|
538
|
+
*/
|
|
539
|
+
collectScriptAndStyle: (parent: HTMLElement) => void;
|
|
540
|
+
getScript: (url: string) => Script | undefined;
|
|
541
|
+
getStyle: (urlOrCode: string) => Style | undefined;
|
|
542
|
+
/**
|
|
543
|
+
* 导入入口资源
|
|
544
|
+
*/
|
|
179
545
|
importEntry(app: BaseModel): Promise<void>;
|
|
546
|
+
/**
|
|
547
|
+
* 导入HTML入口
|
|
548
|
+
*/
|
|
180
549
|
importHtmlEntry(app: MicroAppModel): Promise<void>;
|
|
550
|
+
/**
|
|
551
|
+
* 导入实例入口
|
|
552
|
+
*/
|
|
181
553
|
importInstanceEntry(app: BaseModel): Promise<void>;
|
|
182
|
-
setScript(url: string, script: IScriptOption | Script)
|
|
183
|
-
setStyle(url: string, style: Style)
|
|
554
|
+
setScript: (url: string, script: IScriptOption | Script) => void;
|
|
555
|
+
setStyle: (url: string, style: Style) => void;
|
|
556
|
+
/**
|
|
557
|
+
* 处理样式表链接
|
|
558
|
+
*/
|
|
559
|
+
private handleStylesheetLink;
|
|
560
|
+
/**
|
|
561
|
+
* 处理图标链接
|
|
562
|
+
*/
|
|
563
|
+
private handleIconLink;
|
|
564
|
+
/**
|
|
565
|
+
* 检查是否应该忽略脚本
|
|
566
|
+
*/
|
|
567
|
+
private shouldIgnoreScript;
|
|
568
|
+
/**
|
|
569
|
+
* 处理被排除的脚本
|
|
570
|
+
*/
|
|
571
|
+
private handleExcludedScript;
|
|
572
|
+
/**
|
|
573
|
+
* 处理外部脚本
|
|
574
|
+
*/
|
|
575
|
+
private handleExternalScript;
|
|
576
|
+
/**
|
|
577
|
+
* 处理内联脚本
|
|
578
|
+
*/
|
|
579
|
+
private handleInlineScript;
|
|
580
|
+
/**
|
|
581
|
+
* 处理链接元素
|
|
582
|
+
*/
|
|
583
|
+
private processLinks;
|
|
584
|
+
/**
|
|
585
|
+
* 处理样式元素
|
|
586
|
+
*/
|
|
587
|
+
private processStyles;
|
|
588
|
+
/**
|
|
589
|
+
* 处理脚本元素
|
|
590
|
+
*/
|
|
591
|
+
private processScripts;
|
|
592
|
+
/**
|
|
593
|
+
* 处理Meta元素
|
|
594
|
+
*/
|
|
595
|
+
private processMetas;
|
|
596
|
+
/**
|
|
597
|
+
* 处理图片元素
|
|
598
|
+
*/
|
|
599
|
+
private processImages;
|
|
600
|
+
/**
|
|
601
|
+
* 加载初始资源
|
|
602
|
+
*/
|
|
603
|
+
private loadInitialSources;
|
|
604
|
+
/**
|
|
605
|
+
* 获取HTML content
|
|
606
|
+
*/
|
|
607
|
+
private fetchHtmlContent;
|
|
608
|
+
/**
|
|
609
|
+
* 创建顶层 root 元素
|
|
610
|
+
*/
|
|
611
|
+
private createWrapElement;
|
|
612
|
+
/**
|
|
613
|
+
* 获取JS content
|
|
614
|
+
*/
|
|
615
|
+
private fetchJsContent;
|
|
184
616
|
}
|
|
185
617
|
|
|
186
|
-
|
|
618
|
+
type FetchOptions = Record<string, unknown>;
|
|
619
|
+
/**
|
|
620
|
+
* 统一的资源获取方法,支持应用级别和全局级别的自定义fetch
|
|
621
|
+
* 优先级:应用级fetchSource > 全局fetchSource > 原生fetch
|
|
622
|
+
* @param url 要获取的资源URL
|
|
623
|
+
* @param options fetch请求选项,默认为空对象
|
|
624
|
+
* @param app 可选的应用实例,如果提供且有自定义fetchSource则优先使用
|
|
625
|
+
* @returns Promise<string> 返回资源内容的Promise,失败时返回空字符串
|
|
626
|
+
*/
|
|
627
|
+
declare const fetchSource: (url: string, options?: FetchOptions, app?: BaseModel) => Promise<string>;
|
|
187
628
|
|
|
629
|
+
/**
|
|
630
|
+
* WEWEB模式枚举
|
|
631
|
+
*/
|
|
632
|
+
declare enum WewebMode {
|
|
633
|
+
/** 应用模式 */
|
|
634
|
+
APP = "app",
|
|
635
|
+
/** 配置模式 */
|
|
636
|
+
CONFIG = "config",
|
|
637
|
+
/** 实例模式 */
|
|
638
|
+
INSTANCE = "js"
|
|
639
|
+
}
|
|
640
|
+
type ContainerType$1 = HTMLElement | ShadowRoot;
|
|
641
|
+
type CallbackFunction<T = unknown> = (instance: BaseModel, exportInstance?: T) => void;
|
|
642
|
+
/**
|
|
643
|
+
* 基础模型属性接口
|
|
644
|
+
*/
|
|
188
645
|
interface IBaseModelProps {
|
|
646
|
+
/** entry模式:js | config | html,默认html */
|
|
189
647
|
[WewebCustomAttrs.mode]?: WewebMode;
|
|
648
|
+
/** URL地址(必选) */
|
|
190
649
|
[WewebCustomAttrs.url]: string;
|
|
191
|
-
|
|
650
|
+
/** 应用ID */
|
|
651
|
+
id?: string | null;
|
|
652
|
+
/** 是否预加载 */
|
|
192
653
|
isPreLoad?: boolean;
|
|
193
654
|
}
|
|
194
|
-
|
|
655
|
+
/**
|
|
656
|
+
* 微应用模式属性配置接口
|
|
657
|
+
*/
|
|
658
|
+
interface IAppModelProps extends IBaseModelProps {
|
|
659
|
+
/** 传递给子应用的数据,默认保存 */
|
|
195
660
|
[WewebCustomAttrs.data]?: Record<string, unknown>;
|
|
661
|
+
/** 是否缓存DOM */
|
|
196
662
|
[WewebCustomAttrs.keepAlive]?: boolean;
|
|
663
|
+
/** 是否启用样式隔离,默认隔离 */
|
|
197
664
|
[WewebCustomAttrs.scopeCss]?: boolean;
|
|
665
|
+
/** 是否使用沙盒隔离,默认隔离 */
|
|
198
666
|
[WewebCustomAttrs.scopeJs]?: boolean;
|
|
667
|
+
/** 是否共享主应用路由 */
|
|
199
668
|
[WewebCustomAttrs.scopeLocation]?: boolean;
|
|
669
|
+
/** 是否使用shadowDom */
|
|
200
670
|
[WewebCustomAttrs.setShodowDom]?: boolean;
|
|
671
|
+
/** 是否在dom上显示源码,默认不显示内存执行 */
|
|
201
672
|
[WewebCustomAttrs.showSourceCode]?: boolean;
|
|
202
|
-
|
|
673
|
+
/** 容器元素 */
|
|
674
|
+
container?: ContainerType$1 | null;
|
|
675
|
+
/** 初始化资源,如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css'] */
|
|
203
676
|
initSource?: SourceType;
|
|
204
677
|
}
|
|
678
|
+
/**
|
|
679
|
+
* 微模块模式属性配置接口
|
|
680
|
+
*/
|
|
205
681
|
interface IJsModelProps extends IBaseModelProps {
|
|
682
|
+
/** 传递给实例render方法的数据 */
|
|
206
683
|
[WewebCustomAttrs.data]?: Record<string, unknown>;
|
|
684
|
+
/** 是否在dom上显示源码,默认显示 */
|
|
207
685
|
[WewebCustomAttrs.showSourceCode]?: boolean;
|
|
208
|
-
|
|
686
|
+
/** 容器元素 */
|
|
687
|
+
container?: ContainerType$1 | null;
|
|
688
|
+
/** 初始化资源,如 ['http://www.hostname.com/a.js', 'http://www.hostname.com/b.css'] */
|
|
209
689
|
initSource?: SourceType;
|
|
690
|
+
/** 是否缓存DOM */
|
|
210
691
|
keepAlive?: boolean;
|
|
692
|
+
/** 是否启用样式隔离,默认隔离 */
|
|
211
693
|
scopeCss?: boolean;
|
|
694
|
+
/** 是否使用沙盒隔离,默认不隔离 */
|
|
212
695
|
scopeJs?: boolean;
|
|
213
696
|
}
|
|
697
|
+
/**
|
|
698
|
+
* 基础模型接口
|
|
699
|
+
*/
|
|
214
700
|
interface BaseModel {
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
|
|
701
|
+
/** 应用缓存键 */
|
|
702
|
+
readonly appCacheKey: string;
|
|
703
|
+
/** 容器元素 */
|
|
704
|
+
container?: ContainerType$1;
|
|
705
|
+
/** 初始化资源 */
|
|
220
706
|
initSource?: SourceType;
|
|
707
|
+
/** 是否为模块应用 */
|
|
221
708
|
isModuleApp?: boolean;
|
|
709
|
+
/** 是否预加载 */
|
|
222
710
|
isPreLoad: boolean;
|
|
711
|
+
/** 是否保持活跃 */
|
|
223
712
|
keepAlive?: boolean;
|
|
224
|
-
|
|
713
|
+
/** 应用名称 */
|
|
225
714
|
name: string;
|
|
226
|
-
|
|
227
|
-
onMount(): void;
|
|
228
|
-
registerRunningApp(): void;
|
|
715
|
+
/** 沙盒实例 */
|
|
229
716
|
sandBox?: SandBox;
|
|
717
|
+
/** 是否启用样式隔离,默认隔离 */
|
|
230
718
|
scopeCss?: boolean;
|
|
719
|
+
/** 是否使用JS隔离 */
|
|
231
720
|
scopeJs: boolean;
|
|
232
|
-
|
|
721
|
+
/** 是否显示源码 */
|
|
233
722
|
showSourceCode?: boolean;
|
|
723
|
+
/** 入口资源 */
|
|
234
724
|
source?: EntrySource;
|
|
235
|
-
|
|
236
|
-
unmount(needDestroy?: boolean): void;
|
|
725
|
+
/** 应用URL */
|
|
237
726
|
url: string;
|
|
727
|
+
/** 获取资源的函数 */
|
|
238
728
|
fetchSource?: typeof fetchSource;
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
|
|
243
|
-
|
|
729
|
+
/**
|
|
730
|
+
* 激活应用
|
|
731
|
+
* @param container 容器元素
|
|
732
|
+
* @param callback 回调函数
|
|
733
|
+
*/
|
|
734
|
+
activated<T = unknown>(container: ContainerType$1, callback?: CallbackFunction<T>): void;
|
|
735
|
+
/**
|
|
736
|
+
* 停用应用
|
|
737
|
+
*/
|
|
738
|
+
deactivated(): void;
|
|
739
|
+
/**
|
|
740
|
+
* 挂载应用
|
|
741
|
+
* @param container 容器元素
|
|
742
|
+
* @param callback 回调函数
|
|
743
|
+
*/
|
|
744
|
+
mount<T = unknown>(container?: ContainerType$1, callback?: CallbackFunction<T>): void;
|
|
745
|
+
/**
|
|
746
|
+
* 错误处理
|
|
747
|
+
*/
|
|
748
|
+
onError(): void;
|
|
749
|
+
/**
|
|
750
|
+
* 挂载处理
|
|
751
|
+
*/
|
|
752
|
+
onMount(): void;
|
|
753
|
+
/**
|
|
754
|
+
* 注册运行中的应用
|
|
755
|
+
*/
|
|
756
|
+
registerRunningApp(): void;
|
|
757
|
+
/**
|
|
758
|
+
* 启动应用
|
|
759
|
+
*/
|
|
760
|
+
start(): Promise<void>;
|
|
761
|
+
/**
|
|
762
|
+
* 卸载应用
|
|
763
|
+
* @param needDestroy 是否需要销毁
|
|
764
|
+
*/
|
|
765
|
+
unmount(needDestroy?: boolean): void;
|
|
766
|
+
/**
|
|
767
|
+
* 获取应用状态
|
|
768
|
+
*/
|
|
769
|
+
get status(): ValueOfAppState;
|
|
770
|
+
/**
|
|
771
|
+
* 设置应用状态
|
|
772
|
+
* @param value 状态值
|
|
773
|
+
*/
|
|
774
|
+
set status(value: ValueOfAppState);
|
|
244
775
|
}
|
|
245
776
|
|
|
246
777
|
declare global {
|
|
@@ -251,40 +782,71 @@ declare global {
|
|
|
251
782
|
}
|
|
252
783
|
interface Node {
|
|
253
784
|
__BK_WEWEB_APP_KEY__?: string;
|
|
254
|
-
__KEEP_ALIVE__?:
|
|
255
|
-
data?:
|
|
785
|
+
__KEEP_ALIVE__?: boolean;
|
|
786
|
+
data?: unknown;
|
|
256
787
|
}
|
|
257
788
|
}
|
|
258
789
|
|
|
259
790
|
/**
|
|
260
|
-
*
|
|
791
|
+
* 资源加载相关类型定义
|
|
792
|
+
* @description 定义了样式、脚本等资源的配置选项和相关类型
|
|
793
|
+
*/
|
|
794
|
+
/**
|
|
795
|
+
* 样式资源配置选项接口
|
|
796
|
+
* @description 定义样式文件的加载配置和属性信息
|
|
261
797
|
*/
|
|
262
798
|
interface IStyleOption {
|
|
799
|
+
/** 样式代码内容 */
|
|
263
800
|
code: string;
|
|
801
|
+
/** 是否来自 HTML 页面内联样式 */
|
|
264
802
|
fromHtml: boolean;
|
|
803
|
+
/** 是否为初始样式(可选) */
|
|
265
804
|
initial?: boolean;
|
|
805
|
+
/** 是否预取样式资源(可选) */
|
|
266
806
|
prefetch?: boolean;
|
|
807
|
+
/** 是否预加载样式资源(可选) */
|
|
267
808
|
preload?: boolean;
|
|
809
|
+
/** 样式文件的 URL 地址(可选) */
|
|
268
810
|
url?: string;
|
|
269
811
|
}
|
|
812
|
+
/**
|
|
813
|
+
* 脚本资源配置选项接口
|
|
814
|
+
* @description 定义脚本文件的加载配置和属性信息
|
|
815
|
+
*/
|
|
270
816
|
interface IScriptOption {
|
|
817
|
+
/** 是否为异步加载脚本 */
|
|
271
818
|
async: boolean;
|
|
819
|
+
/** 脚本代码内容 */
|
|
272
820
|
code: string;
|
|
821
|
+
/** 是否为延迟执行脚本 */
|
|
273
822
|
defer: boolean;
|
|
823
|
+
/** 是否从 HTML 页面中提取的脚本 */
|
|
274
824
|
fromHtml: boolean;
|
|
825
|
+
/** 是否为初始脚本(可选) */
|
|
275
826
|
initial?: boolean;
|
|
827
|
+
/** 是否为 ES6 模块类型脚本 */
|
|
276
828
|
isModule: boolean;
|
|
829
|
+
/** 脚本文件的 URL 地址(可选) */
|
|
277
830
|
url?: string;
|
|
278
831
|
}
|
|
279
832
|
|
|
280
833
|
/**
|
|
281
|
-
*
|
|
834
|
+
* 沙箱环境配置类型定义
|
|
835
|
+
*/
|
|
836
|
+
/**
|
|
837
|
+
* 注入到子应用 window 对象的属性接口
|
|
838
|
+
* @description 定义了 BK WEWEB 平台注入到子应用环境中的必要属性
|
|
282
839
|
*/
|
|
283
840
|
interface IInjectWindowAttrs {
|
|
841
|
+
/** BK WEWEB平台的应用唯一标识 */
|
|
284
842
|
__BK_WEWEB_APP_KEY__: string;
|
|
843
|
+
/** BK WEWEB的附加数据,可包含配置信息、用户数据等 */
|
|
285
844
|
__BK_WEWEB_DATA__: Record<string, unknown>;
|
|
845
|
+
/** 标识页面是否由BK WEWEB驱动的布尔值 */
|
|
286
846
|
__POWERED_BY_BK_WEWEB__: boolean;
|
|
847
|
+
/** 原始 document 对象的引用 */
|
|
287
848
|
rawDocument: Document;
|
|
849
|
+
/** 原始 window 对象的引用 */
|
|
288
850
|
rawWindow: Window;
|
|
289
851
|
}
|
|
290
852
|
|
|
@@ -292,18 +854,40 @@ type FetchSourceType = (url: string, options: Record<string, unknown>) => Promis
|
|
|
292
854
|
interface IStartOption {
|
|
293
855
|
collectBaseSource?: boolean;
|
|
294
856
|
fetchSource?: FetchSourceType;
|
|
295
|
-
|
|
857
|
+
webComponentTag?: string;
|
|
296
858
|
}
|
|
297
859
|
|
|
860
|
+
/**
|
|
861
|
+
* 激活指定应用
|
|
862
|
+
* @description 激活已失活的应用或挂载新应用,支持 keep-alive 模式的应用状态恢复
|
|
863
|
+
* @template T - 导出实例的类型
|
|
864
|
+
* @param appKey - 应用的唯一标识符
|
|
865
|
+
* @param container - 挂载容器,HTMLElement 或 ShadowRoot
|
|
866
|
+
* @param callback - 激活完成后的回调函数(可选)
|
|
867
|
+
* @returns void
|
|
868
|
+
*/
|
|
298
869
|
declare function activated<T>(appKey: string, container: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
|
|
299
870
|
|
|
871
|
+
/**
|
|
872
|
+
* 失活指定应用
|
|
873
|
+
* @description 将指定应用设置为失活状态,根据 keep-alive 配置决定是失活还是卸载
|
|
874
|
+
* @param appKey - 应用的唯一标识符
|
|
875
|
+
* @returns void
|
|
876
|
+
*/
|
|
300
877
|
declare function deactivated(appKey: string): void;
|
|
301
878
|
|
|
879
|
+
type ContainerType = HTMLElement | ShadowRoot;
|
|
880
|
+
type InstanceCallback<T = unknown> = (instance: BaseModel, exportInstance?: T) => void;
|
|
881
|
+
type MountCallback<T = unknown> = (instance: MicroInstanceModel, exportInstance: T) => void;
|
|
882
|
+
/**
|
|
883
|
+
* BK-WEWEB 微模块模式类
|
|
884
|
+
*/
|
|
302
885
|
declare class MicroInstanceModel implements BaseModel {
|
|
303
886
|
private state;
|
|
304
887
|
appCacheKey: string;
|
|
305
|
-
container?:
|
|
888
|
+
container?: ContainerType;
|
|
306
889
|
data: Record<string, unknown>;
|
|
890
|
+
fetchSource?: typeof fetchSource;
|
|
307
891
|
initSource: SourceType;
|
|
308
892
|
isPreLoad: boolean;
|
|
309
893
|
keepAlive: boolean;
|
|
@@ -314,51 +898,184 @@ declare class MicroInstanceModel implements BaseModel {
|
|
|
314
898
|
showSourceCode: boolean;
|
|
315
899
|
source?: EntrySource;
|
|
316
900
|
url: string;
|
|
317
|
-
fetchSource?: typeof fetchSource;
|
|
318
901
|
constructor(props: IJsModelProps & {
|
|
319
902
|
fetchSource?: typeof fetchSource;
|
|
320
903
|
});
|
|
321
|
-
|
|
904
|
+
/**
|
|
905
|
+
* 激活微模块
|
|
906
|
+
*/
|
|
907
|
+
activated<T = unknown>(container: ContainerType, callback?: InstanceCallback<T>): void;
|
|
908
|
+
/**
|
|
909
|
+
* 停用微模块
|
|
910
|
+
*/
|
|
322
911
|
deactivated(): void;
|
|
323
|
-
|
|
912
|
+
/**
|
|
913
|
+
* 挂载微模块
|
|
914
|
+
*/
|
|
915
|
+
mount<T = unknown>(container?: ContainerType, callback?: MountCallback<T>): void;
|
|
916
|
+
/**
|
|
917
|
+
* 错误处理
|
|
918
|
+
*/
|
|
324
919
|
onError(): void;
|
|
920
|
+
/**
|
|
921
|
+
* 挂载处理
|
|
922
|
+
*/
|
|
325
923
|
onMount(): void;
|
|
924
|
+
/**
|
|
925
|
+
* 注册运行中的应用
|
|
926
|
+
*/
|
|
326
927
|
registerRunningApp(): void;
|
|
928
|
+
/**
|
|
929
|
+
* 启动微模块
|
|
930
|
+
*/
|
|
327
931
|
start(): Promise<void>;
|
|
932
|
+
/**
|
|
933
|
+
* 卸载微模块
|
|
934
|
+
*/
|
|
328
935
|
unmount(needDestroy?: boolean): void;
|
|
329
|
-
|
|
330
|
-
|
|
936
|
+
/**
|
|
937
|
+
* 设置微模块 状态
|
|
938
|
+
*/
|
|
939
|
+
set status(value: ValueOfAppState);
|
|
940
|
+
/**
|
|
941
|
+
* 获取微模块 状态
|
|
942
|
+
*/
|
|
943
|
+
get status(): ValueOfAppState;
|
|
944
|
+
/**
|
|
945
|
+
* 初始化沙盒
|
|
946
|
+
*/
|
|
947
|
+
private initializeSandBox;
|
|
948
|
+
/**
|
|
949
|
+
* 设置容器属性
|
|
950
|
+
*/
|
|
951
|
+
private setContainerAttribute;
|
|
952
|
+
/**
|
|
953
|
+
* 转移节点到新容器
|
|
954
|
+
*/
|
|
955
|
+
private transferNodes;
|
|
956
|
+
/**
|
|
957
|
+
* 设置容器
|
|
958
|
+
*/
|
|
959
|
+
private setupContainer;
|
|
960
|
+
/**
|
|
961
|
+
* 创建微模块 包装器
|
|
962
|
+
*/
|
|
963
|
+
private createInstanceWrapper;
|
|
964
|
+
/**
|
|
965
|
+
* 渲染微模块
|
|
966
|
+
*/
|
|
967
|
+
private renderInstance;
|
|
968
|
+
/**
|
|
969
|
+
* 获取脚本信息
|
|
970
|
+
*/
|
|
971
|
+
private getScriptInfo;
|
|
972
|
+
/**
|
|
973
|
+
* 检查是否需要重新加载
|
|
974
|
+
*/
|
|
975
|
+
private needsReload;
|
|
331
976
|
}
|
|
332
977
|
|
|
978
|
+
/**
|
|
979
|
+
* 根据配置模式加载相应的应用或模块实例
|
|
980
|
+
* @description 统一的加载入口,根据模式参数决定加载应用还是模块实例
|
|
981
|
+
* @param props - 基础模型配置参数
|
|
982
|
+
* @returns Promise<BaseModel> - 返回加载的模型实例
|
|
983
|
+
*/
|
|
333
984
|
declare function load(props: IBaseModelProps): Promise<BaseModel>;
|
|
334
|
-
|
|
985
|
+
/**
|
|
986
|
+
* 加载微应用
|
|
987
|
+
* @description 加载或获取已存在的微应用实例,并启动应用
|
|
988
|
+
* @param props - 应用模型配置参数
|
|
989
|
+
* @returns Promise<MicroAppModel> - 返回微应用模型实例
|
|
990
|
+
*/
|
|
991
|
+
declare function loadApp(props: IAppModelProps): Promise<MicroAppModel>;
|
|
992
|
+
/**
|
|
993
|
+
* 加载模块实例
|
|
994
|
+
* @description 加载或获取已存在的模块实例,支持状态监听和异步等待
|
|
995
|
+
* @param props - 模块实例配置参数
|
|
996
|
+
* @returns Promise<MicroInstanceModel> - 返回模块实例模型
|
|
997
|
+
*/
|
|
335
998
|
declare function loadInstance(props: IJsModelProps): Promise<MicroInstanceModel>;
|
|
336
999
|
|
|
1000
|
+
/**
|
|
1001
|
+
* 挂载应用到指定容器
|
|
1002
|
+
* @description 将已加载的应用挂载到指定的 DOM 容器或 ShadowRoot 中
|
|
1003
|
+
* @template T - 导出实例的类型
|
|
1004
|
+
* @param appKey - 应用的唯一标识符
|
|
1005
|
+
* @param container - 挂载容器,可以是 HTMLElement 或 ShadowRoot(可选)
|
|
1006
|
+
* @param callback - 挂载完成后的回调函数(可选)
|
|
1007
|
+
* @returns void
|
|
1008
|
+
*/
|
|
337
1009
|
declare function mount<T>(appKey: string, container?: HTMLElement | ShadowRoot, callback?: <M extends BaseModel>(instance: M, exportInstance?: T) => void): void;
|
|
338
1010
|
|
|
1011
|
+
/**
|
|
1012
|
+
* 卸载并删除指定应用
|
|
1013
|
+
* @description 从缓存中完全删除指定的应用实例,释放相关资源
|
|
1014
|
+
* @param url - 应用的 URL 标识符,用于定位要删除的应用
|
|
1015
|
+
* @returns void
|
|
1016
|
+
*/
|
|
339
1017
|
declare function unload(url: string): void;
|
|
340
1018
|
|
|
1019
|
+
/**
|
|
1020
|
+
* 卸载指定应用
|
|
1021
|
+
* @description 卸载指定的应用实例,并在没有活跃应用时重置全局方法
|
|
1022
|
+
* @param appKey - 应用的唯一标识符
|
|
1023
|
+
* @returns void
|
|
1024
|
+
*/
|
|
341
1025
|
declare function unmount(appKey: string): void;
|
|
342
1026
|
|
|
343
1027
|
/**
|
|
344
|
-
*
|
|
345
|
-
* @description
|
|
1028
|
+
* 预加载模块实例
|
|
1029
|
+
* @description 在浏览器空闲时预加载指定的模块实例,提前准备资源以提升后续加载性能
|
|
1030
|
+
* @param options - 模块加载配置参数
|
|
1031
|
+
* @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
|
|
1032
|
+
* @returns void
|
|
1033
|
+
* @example
|
|
1034
|
+
* ```typescript
|
|
1035
|
+
* preLoadInstance({
|
|
1036
|
+
* name: 'my-module',
|
|
1037
|
+
* url: 'https://example.com/module.js'
|
|
1038
|
+
* });
|
|
1039
|
+
* ```
|
|
346
1040
|
*/
|
|
347
1041
|
declare function preLoadInstance(options: IJsModelProps): void;
|
|
348
1042
|
/**
|
|
349
|
-
*
|
|
350
|
-
* @description
|
|
1043
|
+
* 预加载微应用
|
|
1044
|
+
* @description 在浏览器空闲时预加载指定的微应用,提前准备应用资源以提升后续加载性能
|
|
1045
|
+
* @param options - 应用加载配置参数
|
|
1046
|
+
* @param options.isPreLoad - 将被自动设置为 true,标识这是预加载操作
|
|
1047
|
+
* @returns void
|
|
1048
|
+
* @example
|
|
1049
|
+
* ```typescript
|
|
1050
|
+
* preLoadApp({
|
|
1051
|
+
* name: 'my-app',
|
|
1052
|
+
* entry: 'https://example.com/app/'
|
|
1053
|
+
* });
|
|
1054
|
+
* ```
|
|
351
1055
|
*/
|
|
352
|
-
declare function preLoadApp(options:
|
|
1056
|
+
declare function preLoadApp(options: IAppModelProps): void;
|
|
353
1057
|
/**
|
|
354
|
-
*
|
|
355
|
-
* @description
|
|
1058
|
+
* 预加载全局资源
|
|
1059
|
+
* @description 在浏览器空闲时预加载指定的全局资源列表,包括样式文件、脚本文件等
|
|
1060
|
+
* @param sourceList - 要预加载的资源列表,可以是单个资源或资源数组
|
|
1061
|
+
* @returns void
|
|
1062
|
+
* @example
|
|
1063
|
+
* ```typescript
|
|
1064
|
+
* // 预加载单个资源
|
|
1065
|
+
* preLoadSource('https://example.com/style.css');
|
|
1066
|
+
*
|
|
1067
|
+
* // 预加载多个资源
|
|
1068
|
+
* preLoadSource([
|
|
1069
|
+
* 'https://example.com/style.css',
|
|
1070
|
+
* 'https://example.com/script.js'
|
|
1071
|
+
* ]);
|
|
1072
|
+
* ```
|
|
356
1073
|
*/
|
|
357
1074
|
declare function preLoadSource(sourceList: SourceType): void;
|
|
358
1075
|
|
|
359
1076
|
declare class WeWeb {
|
|
360
1077
|
fetchSource?: FetchSourceType;
|
|
361
|
-
|
|
1078
|
+
webComponentTag: string;
|
|
362
1079
|
constructor();
|
|
363
1080
|
setWebComponentTag(): void;
|
|
364
1081
|
start(option?: IStartOption): void;
|