Skip to content

Web 兼容矩阵 experimental

本文用于说明 weapp-vite 在 Web 运行时(@weapp-vite/web)下的能力边界。 状态含义如下:

  • supported:已实现且有基础测试覆盖。
  • partial:可用但有明显限制或降级行为。
  • unsupported:当前未实现,不应依赖。

WARNING

Web 运行时仍处于实验阶段(experimental),用于预览/调试,不替代开发者工具与真机行为。

模板语法矩阵

能力状态说明
插值表达式supported支持文本与属性表达式。
wx:if / wx:elif / wx:elsesupported支持条件分支链路。
wx:for / wx:keysupported支持列表渲染与 key 生成。
<template name> + <template is>supported支持模板注册与调用。
<import> / <wx-import>supported支持模板导入,缺失时告警。
<include> / <wx-include>supported支持模板包含,缺失时告警。
<wxs>(内联与 src)partial支持基础执行与 require,仅允许相对/绝对路径。
<slot>partial保留为原生 slot 标签;高级插槽语义不保证与小程序完全一致。
事件前缀 bind/catch/capturepartial采用表驱动映射并支持 catch/capture 标记;事件别名仍是高频子集。
复杂模板能力(如 wx:model 等)unsupported当前未进入 Web 编译主路径。

组件选项矩阵

能力状态说明
properties(含 type/value/observersupported支持属性反射、类型收敛与 observer。
data / setDatasupported支持基础状态更新与重渲染。
methods / triggerEventsupported支持事件触发与组件方法调用。
lifetimescreated/attached/ready/detachedsupported支持基础生命周期。
pageLifetimesshow/hidepartial在页面显示/隐藏时分发到组件;resize 依赖浏览器环境。
behaviors(递归合并)supported支持递归合并 data/properties/methods/lifetimes/pageLifetimes
observerInitsupported可配置初始化阶段 observer 触发策略。
relations / externalClassesunsupported当前未在 runtime ComponentOptions 中实现。

wx API 矩阵(Web bridge)

API状态说明
wx.navigateTosupported支持基础页面栈推进。
wx.redirectTosupported支持替换当前页面。
wx.reLaunchsupported支持重建路由栈。
wx.switchTabpartial当前行为等价于 redirectTo
wx.showTabBar / wx.hideTabBarpartial当前为 no-op 成功桥接,用于兼容调用链,不改变实际 Web 布局。
wx.loadSubPackage / wx.preloadSubpackagepartial当前提供 no-op 成功桥接,主要用于兼容分包加载调用链,不执行真实下载与预加载流程。
wx.navigateBacksupported支持 delta 回退。
wx.setNavigationBarTitlepartial依赖默认导航栏组件存在。
wx.setNavigationBarColorpartial依赖默认导航栏组件存在。
wx.setBackgroundColor / wx.setBackgroundTextStylepartial提供页面背景与文本样式的近似桥接,基于 DOM 样式设置,不等价小程序原生渲染语义。
wx.showNavigationBarLoading / hideNavigationBarLoadingpartial依赖默认导航栏组件存在。
wx.showLoading / wx.hideLoadingpartial提供轻量 DOM loading 层,视觉行为为近似实现。
wx.nextTickpartial基于微任务队列调度回调,时序近似小程序行为。
wx.showModalpartial基于浏览器 confirm/alertconfirmText/cancelText 不生效。
wx.showActionSheetpartial通过浏览器 prompt 或预设索引桥接选择结果,交互样式与真机 ActionSheet 不一致。
wx.showToastpartial提供轻量 DOM toast,样式与真机不完全一致。
wx.startPullDownRefresh / wx.stopPullDownRefreshpartialWeb 侧均作为 no-op 成功桥接,便于兼容下拉刷新调用链。
wx.hideKeyboardpartial通过 blur 当前聚焦输入元素近似桥接收起键盘能力,行为受浏览器焦点模型限制。
wx.pageScrollTopartial支持 scrollTop/duration 的基础滚动,selector 等高级能力未覆盖。
wx.createCanvasContextpartial基于浏览器 2D Canvas 上下文桥接高频绘制命令,绘图状态与高级 API 未全量覆盖。
wx.createVideoContextpartial基于页面 video 元素提供播放控制桥接(play/pause/seek 等),不包含原生播放器完整语义。
wx.createWorkerpartial基于浏览器 Worker 桥接消息收发与错误监听(postMessage/onMessage/onError),线程模型与真机不完全一致。
wx.createSelectorQuerypartial支持 in/select/selectAll/selectViewportboundingClientRect/scrollOffset/fields/node 高频子集。
wx.setClipboardData / wx.getClipboardDatapartial依赖浏览器剪贴板权限;失败时会回调 fail
wx.requestpartial基于 fetch 桥接,支持常见 JSON/text 场景;上传下载与高级拦截能力未覆盖。
wx.uploadFilepartial基于 fetch + FormData 桥接文件上传,支持基础表单字段;上传任务进度与中断控制语义未覆盖。
wx.downloadFilepartial基于 fetch + Blob URL 桥接,返回临时 URL;文件系统语义与真机不一致。
wx.openDocumentpartial支持 URL 或内存文件桥接到浏览器新窗口预览,文档菜单与内置查看器行为不等价。
wx.chooseImagepartial优先使用 showOpenFilePicker,降级到文件输入框选择;结果为浏览器临时 URL。
wx.chooseMediapartial基于文件选择器桥接图片/视频选择,结果为浏览器临时 URL,媒体元信息(时长/尺寸)当前为近似占位值。
wx.chooseVideopartial基于媒体文件选择桥接视频选择,返回浏览器临时 URL;时长/尺寸字段当前为近似占位值。
wx.compressImagepartial优先基于 Canvas 执行近似压缩,失败或能力缺失时回退原图路径;压缩质量与真机语义不完全一致。
wx.compressVideopartial当前提供 no-op 兼容桥接(默认返回原视频路径),可通过预设结果注入压缩后的临时路径用于调试流程。
wx.getImageInfopartial基于浏览器 Image 对象读取图片宽高与类型;EXIF 与方向能力为近似值。
wx.getVideoInfopartial优先读取运行时预设,降级尝试浏览器 video 元信息;文件大小、帧率、码率等字段当前为近似值。
wx.chooseMessageFilepartial基于文件选择器桥接消息文件选择,返回浏览器临时文件信息;会话/聊天上下文语义与真机不同。
wx.chooseFilepartial基于文件选择器桥接通用文件选择,支持 extension 过滤;返回浏览器临时文件信息。
wx.previewImagepartial使用浏览器 window.open 预览图片,依赖浏览器弹窗策略。
wx.previewMediapartial基于浏览器新窗口预览媒体 URL,不提供小程序原生媒体预览器的手势、切换与播放控制能力。
wx.openVideoEditorpartial当前提供 API 级兼容桥接(默认返回原视频路径),可通过预设结果注入编辑后路径用于调试流程。
wx.saveImageToPhotosAlbumpartial通过浏览器下载行为近似桥接保存流程,不具备系统相册写入与权限弹窗等真机语义。
wx.saveVideoToPhotosAlbumpartial通过浏览器下载行为近似桥接保存流程,不具备系统相册写入与权限弹窗等真机语义。
wx.saveFilepartial将临时文件路径近似持久化到 Web 内存文件系统并返回 savedFilePath,不等价真机文件沙箱语义。
wx.saveFileToDiskpartial通过浏览器下载行为近似桥接保存文件流程,不具备小程序容器内的系统文件管理语义。
wx.login / wx.checkSession / wx.getAccountInfoSyncpartial提供 Web 环境下的登录态占位桥接与会话校验,不等价真实小程序登录会话。
wx.getUserInfo / wx.getUserProfilepartial提供用户信息读取与授权确认占位桥接,可通过预设结果注入用户资料,不触发系统级授权弹窗。
wx.showShareMenu / wx.updateShareMenupartial提供 API 级成功回调桥接,不覆盖平台级分享能力差异。
wx.getExtConfigSync / wx.getExtConfigpartial返回 Web runtime 注入的扩展配置快照(默认空对象)。
wx.getUpdateManager / wx.getLogManagerpartial返回 Web 侧更新/日志桥接对象:更新流程可通过预设状态驱动,日志输出映射到浏览器 console。
wx.cloud.init / wx.cloud.callFunctionpartial提供云能力初始化与云函数调用占位桥接,返回 mock 结果用于流程调试,不连接真实云环境。
wx.reportAnalyticspartial在运行时内存中记录事件用于调试,不会真实上报到微信数据分析后台。
wx.navigateToMiniProgram / wx.exitMiniProgrampartial提供 API 级桥接用于流程调试,不执行真实小程序容器跳转/退出。
wx.openCustomerServiceChatpartial可选地通过浏览器打开客服链接,企业微信会话能力不等价。
wx.makePhoneCallpartial通过浏览器 tel: 链接桥接拨号流程,受设备与浏览器支持限制。
wx.chooseAddresspartial支持通过运行时预设或 prompt 输入桥接收货地址选择,不包含小程序原生地址簿与用户授权弹窗能力。
wx.chooseLocationpartial支持通过预设值或 prompt 输入经纬度完成桥接,不包含地图选点 UI 与 POI 选择能力。
wx.openLocationpartial通过地图 URL 跳转近似桥接定位查看能力,不等价微信内置地图页面行为。
wx.requestPaymentpartial仅提供成功回调级占位桥接,不涉及真实支付签名与交易流程。
wx.requestSubscribeMessagepartial提供订阅消息授权结果占位桥接,可通过预设值控制模板消息确认结果,不触发平台级订阅弹窗。
wx.createRewardedVideoAd / wx.createInterstitialAdpartial提供广告对象生命周期桥接(load/show/onError/onClose),不触发真实广告网络与平台策略。
wx.createVKSessionpartial提供 VKSession 生命周期占位桥接(start/stop/destroy/on/off),不包含真实 VisionKit 推理能力。
wx.getNetworkType / wx.onNetworkStatusChange / wx.offNetworkStatusChangepartial基于 navigator.onLine 与浏览器网络事件,网络类型为近似值。
wx.scanCodepartial提供基于输入/预设结果的占位扫码桥接,用于流程调试,不等价真实摄像头扫码能力。
wx.getLocationpartial基于浏览器 Geolocation API 桥接,坐标与精度字段受浏览器权限策略影响。
wx.getFuzzyLocationpartial优先读取运行时预设并降级到定位结果模糊化桥接(经纬度保留两位小数),精度字段为近似值。
wx.vibrateShortpartial通过浏览器 navigator.vibrate 触发短振动,实际效果受设备与权限限制。
wx.getBatteryInfo / wx.getBatteryInfoSyncpartial优先读取浏览器 Battery API,缺失时回退到缓存近似值。
wx.getFileSystemManagerpartial提供基于内存的文件读写桥接(writeFile/readFile 及 sync 版本),用于开发调试,不等价真机沙箱文件系统。
wx.setStorage / getStorage / removeStorage / clearStorage / getStorageInfopartial基于内存 + localStorage 前缀桥接;与真机容量和隔离策略不完全一致。
wx.setStorageSync / getStorageSync / removeStorageSync / clearStorageSync / getStorageInfoSyncpartial提供同步桥接,缺失 key 时 getStorageSync 返回空字符串。
wx.getSystemInfo / wx.getSystemInfoSync / wx.getWindowInfopartial基于浏览器环境推断,字段为近似值。
wx.onWindowResize / wx.offWindowResizepartial基于浏览器 resize 事件桥接窗口尺寸变化回调,触发时序与真机可能有差异。
wx.getDeviceInfo / wx.getSystemSetting / wx.getAppAuthorizeSettingpartial返回浏览器可推断字段与默认授权状态(多数字段为近似/占位值)。
wx.getSetting / wx.authorize / wx.openSettingpartial提供基于运行时内存状态的权限桥接,支持常见 scope 调试,不会触发系统级授权弹窗。
wx.openAppAuthorizeSettingpartial提供应用级授权设置结果桥接,可通过预设状态注入授权结果,不触发系统级授权设置页。
wx.getAppBaseInfopartial提供浏览器环境下的基础信息近似值(语言、主题、平台等)。
wx.getMenuButtonBoundingClientRectpartial返回基于窗口尺寸的启发式胶囊按钮区域,不保证与真机一致。
wx.getLaunchOptionsSync / wx.getEnterOptionsSyncpartial返回基于当前 Web runtime 路由推断的启动参数快照。
wx.canIUsepartial支持 API 级能力探测(wx.xxx);复杂组件/样式规则探测未覆盖。
getCurrentPages / getAppsupported提供基础桥接能力。
其他常见 API(多媒体高级能力等)unsupported尚未内置桥接,需业务层自行兼容。

已知限制

  1. Web 侧表达式与 WXS 执行依赖动态求值机制,行为与小程序引擎存在差异。 如需更保守或更严格的行为,可通过 weapp.web.pluginOptions.runtime.executionMode 调整为 safestrict
  2. 事件映射与组件标签映射优先覆盖高频场景,未承诺全量等价。
  3. analyze --platform h5 目前仅支持 Web 静态配置分析(weapp.webexecutionMode),不包含分包体积、源码映射和仪表盘能力。
  4. 运行时告警已支持 runtime.warnings.levelruntime.warnings.dedupe,但当前可观测信息仍以控制台输出为主。

建议用法

  1. 将 Web 运行时作为“开发期预览与调试层”,不要直接等价真机验收。
  2. 新增 Web 能力时,同步更新本矩阵,并补齐单测/E2E 用例。
  3. 需要查看 Web 侧静态分析时,可执行 weapp-vite analyze --platform h5 --json
  4. 若业务依赖 unsupported 能力,建议在业务侧提供平台分支与降级策略。

Released under the MIT License.