跳到正文

功能与限制 ​

和微信开发者工具的区别 ​

wxa-runner 用的是和开发者工具同一套官方基础库,渲染、组件、生命周期的行为一致。区别在运行的地方和用途:

wxa-runner微信开发者工具
运行在普通的 Chrome,可以无头运行开发者工具的模拟器
调试Chrome DevTools开发者工具的调试器
自动化测试Playwright 直接操作页面,Linux、CI 上也能跑要远程控制开发者工具,只能在 Windows、macOS 上运行
需要安装开发者工具不需要,没装时用内置的基础库和编译器—
预览、上传、真机调试不支持支持
插件、Worker不支持支持

适合本地开发调试、跑自动化测试;发布相关的事情仍然在开发者工具里做。

支持的项目 ​

项目说明
原生小程序直接运行 project.config.json 所在目录
uni-app运行编译产物目录(如 dist/dev/mp-weixin),已在 Vue 3 的真实项目上验证
Taro 等其他框架运行编译产物目录。编译产物是标准的小程序代码,目前在真实项目上验证过的只有 uni-app

支持的能力 ​

能力支持
渲染WXML、WXSS、WXS、自定义组件,App / Page / Component 生命周期
路由navigateTo、redirectTo 等页面路由,10 层页面栈,tabBar
分包普通分包、独立分包,分包预下载(preloadRule),分包异步化:跨分包引用组件(componentPlaceholder)和 JS(require.async)。代码启动时全部加载,没有下载过程
界面导航栏、tabBar(包括自定义 tabBar)、toast / modal / actionSheet,默认模拟 iPhone X
组件picker、canvas、camera、video、map(需要联网)、web-view
媒体chooseImage、chooseMedia(图片和视频)、chooseVideo 由浏览器选文件,previewImage、getImageInfo,保存到相册即下载;InnerAudioContext 播放音频
网络request、上传、下载由开发服务器转发(没有跨域限制),WebSocket
存储Storage、FileSystemManager 基本操作
登录、用户信息等开放接口返回固定的假数据,支付、扫码默认失败,默认返回什么。可以用 setup mock,或用真实登录拿真实的 code

基础库已验证 2.32.3、3.3.4、3.5.8、3.7.0;3.7.1 和 3.8.8 上全部测试也通过,但默认不会选用,见下文。

已知限制 ​

  • 基础库版本:3.7.1 起的基础库不会自动选用,要用 --baselib 或 WXA_BASELIB 指定,启动时提示超出已验证的范围。 内置基础库只有 3.7.0,更新的版本要先在开发者工具里下载
  • 未实现的 API:还没有实现的原生 API 调用后返回成功,以免打断业务代码。测试里会被发现,见检查运行时错误
  • 设备能力:不支持蓝牙等设备能力
  • 地图:MapContext 的 toScreenLocation、fromScreenLocation、地面覆盖物等方法在基础库的网页实现里没有,调用后不会回调 (详见设计文档)
  • 小程序能力:不支持插件、Worker(#10)
  • 没有开发者工具时(如 Linux、CI):只支持 x86-64;编译器版本较旧,模板运行时有少量差异(如单页最多 16000 个节点);地区选择器不可用

基于 MIT 许可发布。内置基础库是微信官方代码,版权归腾讯所有