Runtime Bridge API(运行时配置)
本页聚焦可在业务工程中直接使用的运行时能力。内部注册与调度函数已从文档目录中移除。
全局默认值
setWevuDefaults()
- 类型入口:
WevuDefaults - 用途:配置
createApp/defineComponent的默认行为。
resetWevuDefaults()
- 类型入口:
void - 用途:重置默认配置。
- 场景:测试隔离、开发调试。
setData 排除标记
markNoSetData()
- 类型入口:
<T>(value: T) => T - 用途:标记对象不参与
setData快照同步。
isNoSetData()
- 类型入口:
boolean - 用途:判断对象是否被标记为 no-setData。
调试记录
addMutationRecorder()
- 类型入口:
MutationRecord - 用途:注册状态 mutation 记录器。
removeMutationRecorder()
- 类型入口:
MutationRecord - 用途:移除状态 mutation 记录器。
页面布局桥接
setPageLayout() / usePageLayout()
- 类型入口:
PageLayoutState/WevuPageLayoutMap - 用途:在运行时读取或切换页面 layout。
- 说明:通常由 Weapp-vite 的
definePageMeta({ layout })、routeRules.layout先确定初始 layout;业务侧只在需要运行时切换页面壳时调用。
registerPageLayoutBridge() / unregisterPageLayoutBridge()
- 类型入口:
LayoutBridgeInstance - 用途:注册页面 layout 桥接实例。
- 说明:主要给 Weapp-vite layout 运行时与框架集成使用,业务工程通常不需要直接调用。
registerRuntimeLayoutHosts() / unregisterRuntimeLayoutHosts()
- 类型入口:
LayoutHostBinding - 用途:注册 layout host 映射,供页面运行时定位当前页面壳。
- 说明:属于框架集成层 API;业务侧优先使用
setPageLayout()。
useLayoutBridge() / useLayoutHosts()
- 类型入口:
LayoutBridgeInstance/LayoutHostBinding - 用途:读取当前 layout bridge 或 host 绑定。
- 说明:用于 layout 组件、调试页和框架扩展,不建议普通页面直接依赖。
resolveLayoutBridge()
- 类型入口:
LayoutBridgeInstance - 用途:解析当前页面已注册的 layout bridge。
- 适合:需要在业务 hook 中统一访问 layout 内部宿主能力时,先定位承载宿主组件的 layout 上下文。
- 说明:普通业务页面优先使用更直接的
resolveLayoutHost();只有需要自己调用selectComponent()或做兼容兜底时再使用 bridge。
resolveLayoutHost() / waitForLayoutHost()
- 类型入口:
LayoutHostResolveOptions - 用途:按
layout-hostkey 解析 layout 内暴露的宿主组件实例。 - 适合:Toast、Dialog、全局反馈层、抽屉等天然属于 layout 的组件。
- 说明:
resolveLayoutHost()同步返回当前可用实例;waitForLayoutHost()会按短间隔重试,适合页面初次进入时等待 layout 宿主完成挂载。
示例:
vue
<script setup lang="ts">
import { resolveLayoutHost } from 'wevu'
interface ToastHost {
show: (options: { message: string }) => void
}
function showSuccess() {
const toast = resolveLayoutHost<ToastHost>('layout-toast')
toast?.show({ message: '操作成功' })
}
</script>子路径边界
wevu/compiler不是wevu根入口的一部分,主要给编译工具使用。wevu/router也不是运行时桥接页的一部分;若你需要createRouter()/useRouter(),请直接看 /wevu/router。wevu/fetch与wevu/web-apis是网络/Web API 兼容入口;分别看 /wevu/fetch 与 Web runtime 相关说明。
示例
vue
<script setup lang="ts">
import {
addMutationRecorder,
onUnmounted,
ref,
removeMutationRecorder,
setWevuDefaults,
} from 'wevu'
setWevuDefaults({
component: {
options: {
addGlobalClass: true,
},
},
})
const count = ref(0)
function recorder(record: any) {
console.log('mutation:', record.path, record.type)
}
addMutationRecorder(recorder)
onUnmounted(() => {
removeMutationRecorder(recorder)
})
</script>
<template>
<button @tap="count += 1">
count: {{ count }}
</button>
</template>vue
<script setup>
import {
addMutationRecorder,
onUnmounted,
ref,
removeMutationRecorder,
setWevuDefaults,
} from 'wevu'
setWevuDefaults({
component: {
options: {
addGlobalClass: true,
},
},
})
const count = ref(0)
function recorder(record) {
console.log('mutation:', record.path, record.type)
}
addMutationRecorder(recorder)
onUnmounted(() => {
removeMutationRecorder(recorder)
})
</script>
<template>
<button @tap="count += 1">
count: {{ count }}
</button>
</template>