WU / 文档通用微前端
中文

加载、缓存与诊断参考

动态加载、优先级、overrides、缓存、样式和运行时观察。

选择加载层级

完整生命周期使用 wu.mount。wu.prefetch 提前请求已注册应用资源,wu.use 加载通过 exports 发布的组件。WuLoader 是独立加载器,不替代 core 的目录、sandbox 或 grants。

Overrides 和检查工具属于宿主。指标衡量观察到的某段过程,不保证浏览器已完成绘制。完整流程请参阅应用加载和诊断。

wu.use

加载另一应用声明的组件 export。

wu.use("app.component"): Promise<unknown>

  • 参数: 精确名称 app.component;提供方 manifest 必须声明 wu.exports。
  • 返回值: 存在时为 default export,否则为模块 namespace。
  • 错误: 应用/export 缺失、目录穿越、无效 URL 或导入失败会拒绝。
  • 权限: 宿主;加载组件在消费方 realm 内执行代码。
  • 清理: 使用组件的 renderer 实例负责管理 cleanup。
const ProductCard = await wu.use('catalog.ProductCard');

运行时存在此方法,但 WuCore 声明缺失。它不会在不同框架之间转换组件。

参考:src/core/wu-core.js.

wu.prefetchAll

请求预加载全部已注册应用。

wu.prefetchAll(options?): Promise<void> | (() => void)

  • 参数: 与 prefetch 相同的触发选项。
  • 返回值: 即时 Promise 或延迟触发器 cleanup。
  • 错误: 预加载是向浏览器发出请求,不确认 renderer 能挂载。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 选择延迟触发器时保存 cleanup。
await wu.prefetchAll({ on: 'immediate' });

参考:src/core/wu-prefetch.js.

new WuLoader

创建具备缓存和进行中请求去重的代码与组件 loader。

new WuLoader({ maxCacheSize?, cacheTTL? }?): WuLoader

  • 参数: maxCacheSize 限制条目数量,默认 50;cacheTTL 单位毫秒,默认 1800000。
  • 返回值: 包含 loadApp、loadComponent、preload、isAvailable 和 clearCache 的实例。
  • 错误: 创建不会注册应用或执行生命周期。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: loader.clearCache() 释放缓存条目。
import { WuLoader } from 'wu-framework';
const loader = new WuLoader({ maxCacheSize: 20, cacheTTL: 60000 });

参考:src/core/wu-loader.js.

WuLoader.loadApp

下载入口代码文本,供加载流程使用。

loader.loadApp(appUrl, manifest?): Promise<string>

  • 参数: 基础 URL 和带可选 entry 的 manifest。
  • 返回值: 代码字符串;不执行 mount,也不注册应用。
  • 错误: Fetch 失败、无效响应或 entry 解析失败会拒绝。
  • 权限: 宿主,受环境网络访问限制。
  • 清理: clearCache(base) 丢弃供后续读取复用的缓存。
const code = await loader.loadApp('/apps/catalog', { entry: 'entry.js' });

参考:src/core/wu-loader.js.

WuLoader.loadComponent

导入限制在应用基础目录内的组件。

loader.loadComponent(appUrl, componentPath): Promise<unknown>

  • 参数: 基础地址和组件相对路径;不允许绝对 URL 或目录穿越。
  • 返回值: default export 或导入 namespace。
  • 错误: 路径超出基础目录或导入失败时拒绝。
  • 权限: 模块在同一上下文执行代码,不是 scoped RPC。
  • 清理: 原生 import 保留模块缓存。
const card = await loader.loadComponent('/apps/catalog', 'components/card.js');

参考:src/core/wu-loader.js.

WuLoader.preload

为应用列表提前下载代码。

loader.preload(appConfigs: WuAppConfig[]): Promise<void>

  • 参数: 包含 name 和 url 的配置数组。
  • 返回值: 预加载遍历完成的 Promise。
  • 错误: 预加载逐个捕获应用失败;挂载前检查可用性。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不挂载 renderers;clearCache 释放缓存文本。
await loader.preload([{ name: 'catalog', url: '/apps/catalog' }]);

参考:src/core/wu-loader.js.

WuLoader.isAvailable

查询 URL 是否正确响应 HEAD。

loader.isAvailable(url): Promise<boolean>

  • 参数: 待检查 URL。
  • 返回值: 布尔值,网络错误转换为 false。
  • 错误: 服务器拒绝 HEAD 时,即使 GET 可用也可能返回 false。
  • 权限: 宿主网络访问。
  • 清理: 不创建订阅或持久进程。
const available = await loader.isAvailable('/apps/catalog/entry.js');

参考:src/core/wu-loader.js.

WuLoader.clearCache

丢弃 loader 缓存的文本和记录。

loader.clearCache(pattern?): void

  • 参数: 可选模式;无模式时清空 loader 缓存。
  • 返回值: void。
  • 错误: 不使浏览器 ESM 缓存失效。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
loader.clearCache('catalog');

参考:src/core/wu-loader.js.

WuLoader.getStats

查询 loader 缓存和进行中的 imports。

loader.getStats(): object

  • 参数: 无参数。
  • 返回值: 指标对象。
  • 错误: 不代表应用挂载状态。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(loader.getStats());

参考:src/core/wu-loader.js.

wu.override

配置开发用 URL 替换。

wu.override(name, url, options?): void

  • 参数: name 和已授权 URL;options.maxAge/path 配置 override 持久化。
  • 返回值: void
  • 错误: 系统验证域名和配置;override 不会自动 remount。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 共享会话前移除开发 overrides。
wu.override('catalog', 'http://localhost:4101');

参考:src/core/wu-overrides.js.

wu.removeOverride

移除 URL 替换。

wu.removeOverride(name): void

  • 参数: 精确应用名称。
  • 返回值: void
  • 错误: 系统验证域名和配置;override 不会自动 remount。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 共享会话前移除开发 overrides。
wu.removeOverride('catalog');

参考:src/core/wu-overrides.js.

wu.getOverrides

查询活动 URL 替换。

wu.getOverrides(): Record<string,string>

  • 参数: 无参数。
  • 返回值: Record<string,string>
  • 错误: 系统验证域名和配置;override 不会自动 remount。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 共享会话前移除开发 overrides。
console.log(wu.getOverrides());

参考:src/core/wu-overrides.js.

wu.clearOverrides

移除全部活动替换。

wu.clearOverrides(): void

  • 参数: 无参数。
  • 返回值: void
  • 错误: 系统验证域名和配置;override 不会自动 remount。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 共享会话前移除开发 overrides。
wu.clearOverrides();

参考:src/core/wu-overrides.js.

normalizeStyleMode

规范化样式配置别名。

normalizeStyleMode(mode): string | undefined

  • 参数: 模式字符串或 undefined。
  • 返回值: none→isolated;own-only→fully-isolated;其他值不验证直接传递。
  • 错误: 本身不验证 manifest 是否允许该模式。
  • 权限: 纯函数,不授予权限。
  • 清理: 不创建订阅或持久进程。
import { normalizeStyleMode } from 'wu-framework';
console.log(normalizeStyleMode('own-only'));

参考:src/core/wu-sandbox.js.

resolveDomOwnership

解析显式所有权及 nativeShadow/framework 别名。

resolveDomOwnership(options?): "wu" | "app" | "light"

  • 参数: domOwnership 优先,其次 nativeShadow;Lit 默认选择 app。
  • 返回值: 实际生效的所有权。
  • 错误: 不创建 Shadow DOM,也不验证 renderer 是否实现其边界。
  • 权限: 配置函数,不是安全控制。
  • 清理: 不创建订阅或持久进程。
import { resolveDomOwnership } from 'wu-framework';
console.log(resolveDomOwnership({ framework: 'lit' }));

参考:src/core/wu-sandbox.js.

wu.tagStyleAsApp

为 CSS bridge 将 style/link 样式表归属到应用。

wu.tagStyleAsApp(element, appName): void

  • 参数: style/link 元素和应用名称。
  • 返回值: void。
  • 错误: 归属标记不能替代 manifest 的 styleMode。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 所属者结束时移除样式表。
const style = document.createElement('style');
style.textContent = ':host { color: var(--accent); }';
wu.tagStyleAsApp(style, 'catalog');
document.head.append(style);

参考:src/core/wu-core.js.

new WuCache

创建带 TTL 和可选存储的 LRU 缓存。

new WuCache(options?): WuCache

  • 参数: maxSize 单位 MB;maxItems;TTL 单位 ms;persistent,以及 memory/localStorage/sessionStorage 类型的 storage。
  • 返回值: 缓存实例。
  • 错误: 条目过大或操作限额可能阻止存储。
  • 权限: 宿主;不要用持久存储作为授权。
  • 清理: cache.clear() 释放条目和持久 namespace。
import { WuCache } from 'wu-framework';
const cache = new WuCache({ maxSize: 2, maxItems: 20, defaultTTL: 60000, storage: 'memory' });

参考:src/core/wu-cache.js.

WuCache.get

读取未过期条目并更新 LRU 顺序。

cache.get(key): unknown | null

  • 参数: 条目键。
  • 返回值: 保存值;缺失、过期或 rate limit 时为 null。
  • 错误: null 无法区分 miss、过期或 cooldown,请查看指标。
  • 权限: 访问所属缓存,不应用 store grants。
  • 清理: 不创建订阅或持久进程。
const result = cache.get('catalog-result');

内存读取返回保存的引用,不像 WuStore 那样返回独立快照。

参考:src/core/wu-cache.js.

WuCache.set

保存值并应用空间和过期限制。

cache.set(key, value, ttl?): boolean

  • 参数: 键、值及毫秒 TTL;由于使用 ||,ttl=0 会采用 defaultTTL。
  • 返回值: 存储成功为 true;大小、错误或 rate limit 导致 false。
  • 错误: 捕获失败并返回 false;storage 配额可能限制持久化。
  • 权限: 宿主;验证要持久保存的数据。
  • 清理: delete(key) 移除一条,clear() 移除全部。
const cached = cache.set('catalog-result', { count: 12 }, 30000);

参考:src/core/wu-cache.js.

WuCache.delete

从内存及配置的后端存储删除条目。

cache.delete(key): void

  • 参数: 精确键。
  • 返回值: void
  • 错误: 持久化取决于 storage 可用性和配额。
  • 权限: 缓存所属者的权限。
  • 清理: 不创建订阅或持久进程。
cache.delete('catalog-result');

参考:src/core/wu-cache.js.

WuCache.clear

清空此实例缓存及配置的存储。

cache.clear(): void

  • 参数: 无参数。
  • 返回值: void
  • 错误: 持久化取决于 storage 可用性和配额。
  • 权限: 缓存所属者的权限。
  • 清理: 不创建订阅或持久进程。
cache.clear();

参考:src/core/wu-cache.js.

WuCache.getStats

查询 hits、misses、evictions、大小和 rate limiting。

cache.getStats(): object

  • 参数: 无参数。
  • 返回值: object
  • 错误: 持久化取决于 storage 可用性和配额。
  • 权限: 缓存所属者的权限。
  • 清理: 不创建订阅或持久进程。
console.log(cache.getStats());

参考:src/core/wu-cache.js.

WuCache.getRateLimitStatus

查询操作是否处于 cooldown 及其配额。

cache.getRateLimitStatus(): object

  • 参数: 无参数。
  • 返回值: object
  • 错误: 持久化取决于 storage 可用性和配额。
  • 权限: 缓存所属者的权限。
  • 清理: 不创建订阅或持久进程。
console.log(cache.getRateLimitStatus());

参考:src/core/wu-cache.js.

wu.getStats

汇总 core 各子系统状态和指标。

wu.getStats(): object

  • 参数: 无参数。
  • 返回值: 诊断对象。
  • 错误: 不替代挂载测试或 HTTP 检查。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(wu.getStats());

参考:src/core/wu-core.js.

wu.getManifestDiagnostics

读取应用间声明式依赖错误。

wu.getManifestDiagnostics(): WuManifestImportDiagnostic[]

  • 参数: 无参数;依赖 imports preflight。
  • 返回值: 按消费者/import/提供方组织的诊断列表。
  • 错误: 不自动检查 bundle 全部传递 imports。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.table(wu.getManifestDiagnostics());

参考:src/core/wu-core.js.

wu.showInspector

打开按需加载的可视检查器。

wu.showInspector(): Promise<{ close(): void } | null>

  • 参数: 无参数。
  • 返回值: close handle,未打开时为 null。
  • 错误: chunk 加载或 DOM 环境可能阻止打开。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: close() 或 wu.hideInspector() 移除 overlay。
const inspector = await wu.showInspector();
// Al cerrar tu herramienta:
inspector?.close();

参考:src/core/wu-core.js.

wu.hideInspector

若存在检查 overlay,则关闭。

wu.hideInspector(): Promise<void>

  • 参数: 无参数。
  • 返回值: 关闭 Promise。
  • 错误: 不删除应用或 store 数据。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 移除诊断界面。
await wu.hideInspector();

参考:src/core/wu-core.js.

wu.performance.startMeasure

标记应用或全局耗时测量的起点。

wu.performance.startMeasure(name, appName?): void

  • 参数: 测量名称;appName 默认为 global。
  • 返回值: void。
  • 错误: disabled 配置会跳过记录。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 使用同一名称/应用调用 endMeasure。
wu.performance.startMeasure('load-catalog', 'catalog');

参考:src/core/wu-performance.js.

wu.performance.endMeasure

结束耗时测量,启用时发布到指标和 User Timing。

wu.performance.endMeasure(name, appName?): number

  • 参数: 与 startMeasure 相同的名称/应用。
  • 返回值: 毫秒数;没有起始标记则为 0。
  • 错误: 缺少标记返回 0,不虚构时长。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 移除此测量的起始标记。
const ms = wu.performance.endMeasure('load-catalog', 'catalog');

参考:src/core/wu-performance.js.

wu.performance.generateReport

汇总实例性能统计。

wu.performance.generateReport(): object

  • 参数: 无参数。
  • 返回值: object
  • 错误: User Timing 可用性取决于环境。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(wu.performance.generateReport());

参考:src/core/wu-performance.js.

wu.performance.getMetrics

读取特定应用指标。

wu.performance.getMetrics(appName): object | null

  • 参数: 精确名称;没有测量时为 null。
  • 返回值: object | null
  • 错误: User Timing 可用性取决于环境。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(wu.performance.getMetrics('catalog'));

参考:src/core/wu-performance.js.

wu.performance.getAllMetrics

读取测量器中所有应用的指标。

wu.performance.getAllMetrics(): object

  • 参数: 无参数。
  • 返回值: object
  • 错误: User Timing 可用性取决于环境。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(wu.performance.getAllMetrics());

参考:src/core/wu-performance.js.

wu.performance.clearMetrics

清除一个或所有应用的测量。

wu.performance.clearMetrics(appName?): void

  • 参数: 可选名称。
  • 返回值: void
  • 错误: User Timing 可用性取决于环境。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
wu.performance.clearMetrics('catalog');

参考:src/core/wu-performance.js.

wu.performance.getDevToolsEntries

读取 WU 发出的 User Timing 条目。

wu.performance.getDevToolsEntries(options?): PerformanceEntry[]

  • 参数: type 为 mark、measure 或 all;appName 可选。
  • 返回值: PerformanceEntry[]
  • 错误: User Timing 可用性取决于环境。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.table(wu.performance.getDevToolsEntries({ type: 'measure', appName: 'catalog' }));

参考:src/core/wu-performance.js.

wu.performance.observe

通过 PerformanceObserver 监听新的 WU User Timing 条目。

wu.performance.observe(callback, { type? }?): () => void

  • 参数: PerformanceEntry 回调;type 默认为 measure。
  • 返回值: Cleanup;observer 不可用时返回空函数。
  • 错误: 缺少 PerformanceObserver 不抛出,回调失败会记录。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: stop() 断开 observer。
const stop = wu.performance.observe(entry => console.log(entry.duration), { type: 'measure' });

参考:src/core/wu-performance.js.

wu.performance.configure

配置测量、历史上限、User Timing 和阈值。

wu.performance.configure(options): void

  • 参数: enabled、maxMeasurements、devtoolsTimeline 和按名称配置的 thresholds。
  • 返回值: void。
  • 错误: 超出阈值产生警告,不取消操作。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
wu.performance.configure({ enabled: true, maxMeasurements: 100, devtoolsTimeline: true });

参考:src/core/wu-performance.js.

wu.errorBoundary.register

添加故障分类与恢复处理函数。

wu.errorBoundary.register(handler): void

  • 参数: name、canHandle(error) 和 handle(error,context)。
  • 返回值: void。
  • 错误: 缺少任何成员会抛出;按顺序遍历 handlers。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不返回 unsubscribe;在宿主生命周期内管理这些扩展。
wu.errorBoundary.register({ name: 'catalog-error', canHandle: error => error.name === 'CatalogError', async handle(error) { return { recovered: false, action: 'none', message: error.message }; } });

默认通用 fallback 可能先于后添加的 handlers。依赖此注册前检查顺序。

参考:src/core/wu-error-boundary.js.

wu.errorBoundary.handle

分类故障并获得恢复决定。

wu.errorBoundary.handle(error, context?): Promise<object>

  • 参数: Error 和 context;core 在 mount 期间解释部分 actions。
  • 返回值: 包含 recovered、action 和 handler 信息的结果。
  • 错误: action 名称本身不会改变 URL、超时或权限。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 重试前,恢复流程应释放失败尝试。
const recovery = await wu.errorBoundary.handle(new Error('Entry no disponible'), { appName: 'catalog', phase: 'mount' });

参考:src/core/wu-error-boundary.js.

wu.errorBoundary.getErrorLog

读取 boundary 保留的最近错误。

wu.errorBoundary.getErrorLog(limit?: number): object[]

  • 参数: limit 默认 10。
  • 返回值: 最近条目的数组。
  • 错误: 内存诊断,不是持久记录。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.table(wu.errorBoundary.getErrorLog(5));

参考:src/core/wu-error-boundary.js.

wu.errorBoundary.getStats

汇总错误数量、handlers 和类型。

wu.errorBoundary.getStats(): object

  • 参数: 无参数。
  • 返回值: 包含 totalErrors、handlers、errorsByType 和 recentErrors 的对象。
  • 错误: 不包含从未经过此 boundary 的失败。
  • 权限: 宿主 API,scoped facade 不暴露。
  • 清理: 不创建订阅或持久进程。
console.log(wu.errorBoundary.getStats());

参考:src/core/wu-error-boundary.js.

WuLoadingStrategy

创建加载策略并启动 idle 处理。

new WuLoadingStrategy(core)

  • 参数: core 实例。
  • 返回值: 带默认策略的协调器。
  • 错误: 传播无效配置错误;检查异步操作结果。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: cleanup 取消 idle 回调,并以 null 完成等待队列。
import { WuLoadingStrategy } from 'wu-framework';
const strategies = new WuLoadingStrategy(wu);
strategies.cleanup();

参考:src/core/wu-strategies.js.

strategies.register

注册或替换加载策略。

strategies.register(name, strategy): void

  • 参数: strategy.load(appName,config) 必填;shouldPreload 和 priority 可选。
  • 返回值: void。
  • 错误: strategy.load 不是函数时抛出。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
strategies.register('custom', {
  shouldPreload: false,
  priority: 'low',
  load: async (name, config) => { console.log(name, config); return null; },
});

参考:src/core/wu-strategies.js.

strategies.load

执行 config.strategy 指定的策略。

strategies.load(appName, config): Promise<unknown>

  • 参数: 名称与 config;默认 lazy。
  • 返回值: 已注册 load 函数的结果。
  • 错误: 未知策略记录警告并回退 lazy;load 错误会传播。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
await strategies.load('card', { strategy: 'custom' });

参考:src/core/wu-strategies.js.

strategies.preload

依次预加载策略要求预加载的应用。

strategies.preload(apps): Promise<void>

  • 参数: 包含 name 和 strategy 的配置列表。
  • 返回值: 遍历 Promise;捕获单个失败。
  • 错误: 单个失败被记录,并继续下一应用。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
await strategies.preload([{ name: 'card', strategy: 'custom' }]);

参考:src/core/wu-strategies.js.

strategies.getStats

查询已注册策略及 idle 队列大小。

strategies.getStats(): object

  • 参数: 无参数。
  • 返回值: {totalStrategies,strategies,idleQueueSize,isIdle}。
  • 错误: 本地读取,无副作用。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
console.log(strategies.getStats());

参考:src/core/wu-strategies.js.

strategies.cleanup

停止 idle 队列并释放待处理等待。

strategies.cleanup(): void

  • 参数: 无参数。
  • 返回值: void。
  • 错误: 即使某次解析失败,清理仍尝试完成每项等待。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 取消 idle/timer 并清空队列,待处理项解析为 null。
strategies.cleanup();

参考:src/core/wu-strategies.js.

wu.sandbox.addStyles

向已有 sandbox 插入 CSS。

wu.sandbox.addStyles(appName, css): void

  • 参数: 名称和 CSS 字符串。
  • 返回值: void。
  • 错误: sandbox 不存在时记录警告并返回。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
wu.sandbox.addStyles('card', ':host{display:block}');

sandbox 属性由 core 管理。应用仍挂载时不要调用 cleanupAll,请使用 wu.unmount 协调生命周期。

参考:src/core/wu-sandbox.js.

wu.sandbox.loadExternalStyles

向 sandbox 插入 stylesheet link。

wu.sandbox.loadExternalStyles(appName, href): void

  • 参数: 名称和 CSS URL。
  • 返回值: void;不等待样式表 load。
  • 错误: 缺少 sandbox 会警告,样式表网络错误不作为 Promise 返回。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
wu.sandbox.loadExternalStyles('card', '/styles/card.css');

sandbox 属性由 core 管理。应用仍挂载时不要调用 cleanupAll,请使用 wu.unmount 协调生命周期。

参考:src/core/wu-sandbox.js.

wu.sandbox.getStyleStats

查询 style bridge 统计。

wu.sandbox.getStyleStats(): object | null

  • 参数: 无参数。
  • 返回值: 统计对象或 null。
  • 错误: 读取不执行网络操作。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
console.log(wu.sandbox.getStyleStats());

sandbox 属性由 core 管理。应用仍挂载时不要调用 cleanupAll,请使用 wu.unmount 协调生命周期。

参考:src/core/wu-sandbox.js.

wu.sandbox.reinjectStyles

按应用隔离模式重新注入样式。

wu.sandbox.reinjectStyles(appName): Promise<void>

  • 参数: 已注册 sandbox 名称。
  • 返回值: Promise。
  • 错误: sandbox 缺失或 isolated 模式时不操作;其他模式应用其样式选择规则。
  • 权限: 宿主管理 API,不包含在微应用 scoped facade 中。
  • 清理: 运行时所属者管理资源及其 cleanup 函数。
await wu.sandbox.reinjectStyles('card');

sandbox 属性由 core 管理。应用仍挂载时不要调用 cleanupAll,请使用 wu.unmount 协调生命周期。

参考:src/core/wu-sandbox.js.

在 4.0 中,没有 allowedDomains 的 override 只接受 loopback hosts 或页面 hostname。其他 host 需要显式 allowlist。该限制同时适用于程序化 overrides 和从 cookies 恢复的 overrides。

一起完善 WU

发现了问题?有新的想法?

你的使用体验能让 WU 变得更好。告诉我们遇到的问题,或支持项目的持续开发。