Skip to content

v2.11.2

Latest

Choose a tag to compare

@hiyuki hiyuki released this 03 Nov 11:50
· 40 commits to master since this release

✨ New Features

  • 条件编译与构建配置

    • 统一 mode 与 srcMode 的职责:条件文件后缀、区块 mode 和节点 @mode 仅筛选输出目标,命中后仍按源码方言执行跨端转换;@_mode 保留为 @mode 的兼容别名。
    • 新增 srcModeRules 与区块 src-mode,显式声明目标平台原生源码。旧 modeRules 保留为兼容别名,但不能与 srcModeRules 同时配置。依赖 .ali.mpx、mode="ali" 或 @ali 跳过转换的项目需调整源码方言声明;import / include 引入的原生模板需对资源本身配置 srcModeRules。
    • 新增 webConfig.asyncCommonSubpackage 与 rnConfig.asyncCommonSubpackage,默认抽取公共异步分包,设为 false 时将公共模块合并进 App 主入口。
    • RN 分包转移配置统一收敛至 rnConfig.transSubpackageRules,支持页面、组件与 require.async 引用的模块,兼容原顶层配置。
  • 跨端输出 React Native

    • 新增 mpx.config.rnConfig.dimensionsBase,统一控制响应式单位、媒体查询和 onResize 的尺寸基准,默认由 Screen 改为 Window;设为 'screen' 可保留旧版计算方式。getDimensionsInfo() 支持指定读取 Window / Screen 尺寸,并返回经过 customDimensions 处理的尺寸副本。
    • 优化尺寸变化时的更新范围,仅刷新依赖响应式单位或媒体查询的组件,并补齐独立组件的尺寸响应能力。
    • section-list 新增 enable-item-exposure、item-exposure-threshold 和 binditemexposure,支持列表项、分组头尾的曝光通知,返回原始数据、下标与布局信息;分组头曝光暂不支持吸顶场景。
    • movable-view 新增 workletChange,支持在 UI 线程接收 { x, y, source } 位置变化,不受 JS 事件节流影响。
    • 新增 pageWrapperHOC 导出,支持独立页面接入导航栏、安全区、键盘避让和 Portal 容器。
    • 支持 App onPageNotFound 及 mpx.onPageNotFound / offPageNotFound,在启动入口未注册时通知并回退首页;运行中的路由失败仍通过对应 API 的 fail 处理。
    • connectSocket 支持通过 header 传递握手请求头。
    • image 与 view 背景图片默认启用 @d11/react-native-fast-image;需要使用 RN 原生 Image 时,显式传入 enable-fast-image="{{false}}"。
    • 移除异步分包加载的框架超时计时器,rnConfig.asyncChunk.timeout 不再生效,超时策略由宿主 loadChunkAsync 实现负责。
  • 跨端输出 Web

    • 新增内置标题栏,通过 mpx.config.webConfig.enableTitleBar 开启,支持页面标题、返回按钮与安全区;navigationStyle: 'custom' 时隐藏,非 iOS 顶部安全区可通过 safeAreaInsetTop 配置。
    • 页面 page 选择器支持 scoped 隔离,可通过 <style scoped> 或 autoScopeRules 限定当前页面的样式作用范围。
    • 补齐 mpx.onPageNotFound / offPageNotFound 启动入口监听,与 App 的 onPageNotFound 配合处理入口页面不存在的场景。
  • 支付宝小程序

    • 支持将 navigationStyle: 'custom' 转换为透明、可穿透的自定义导航栏配置,页面显式设置 'default' 时可覆盖 App 的透明导航配置。
    • 支持 scroll-view 的 show-scrollbar 布尔隐藏控制,并补充 text 默认继承父节点 white-space 的兼容样式。
  • UnoCSS 与开发工具

    • UnoCSS 支持扫描 wx:class 对象字面量中的静态类名,补齐特殊字符类名与 alias 处理,并遵循 scan 范围配置;移除自定义 escapeMap,统一使用内置转义规则。
    • @mpxjs/perf 新增 aggrStart / aggrEnd 聚合统计与 traceStart / traceEnd 区段时间线,支持配置 mark / trace 容量;内建探针扩展至小程序、Web 与 RN 的实例初始化、渲染、生命周期和卸载阶段。
    • 性能探针保留 scopeStart / scopeEnd、measureStart / measureEnd 兼容接口;类型 AggResult 更名为 AggrResult,MarkEvent.at 更名为 start,新增 timestamp / info,自定义 Reporter 需同步调整。
    • mpx.use() 成功安装插件后设置插件的 __installed 标记,便于外部判断安装状态。

🐛 Bug Fixes

  • 跨端输出 React Native

    • 修复 externalClasses 新增、更新或移除后样式未刷新,以及独立组件外部样式初始化不完整的问题。
    • 修复响应式样式在组件销毁、后台页面恢复和尺寸变化后更新失效的问题;修复媒体查询范围判断、未命中规则仍生效及 !important 优先级丢失的问题。
    • 修复图片切换、尺寸获取与 widthFix / heightFix 场景的尺寸更新问题,避免将 Android onLoad 的渲染尺寸作为图片原始尺寸,并减少 SVG 加载后的额外渲染。
    • 修复背景图片尺寸与位置计算、异步尺寸结果更新及渐变绘制尺寸问题;对不支持的 SVG 背景图明确报错并丢弃。
    • 修复 Android 输入框切换时意外失焦、键盘收起,以及 hover-class="none" 仍启用点击态的问题。
    • 修复 movable-view 的 change 事件触发时机、source 判定和 worklet 回调闭包更新问题。
    • 修复 createIntersectionObserver 相交区域计算及宽高缺失,完善断开和组件销毁时的清理,避免断开后继续回调;已断开的实例需重新创建。
    • 修复启动参数未正确传入首个页面和 App 生命周期、同路径新页面误继承初始参数的问题;无效入口参数不再传入回退首页。
    • 修复 forceUpdate / setData 更新回调时序,以及页面容器与 Portal 挂载、清理相关问题。
    • 修复蓝牙扫描 powerLevel 未生效,以及多项蓝牙 API 参数校验失败后错误调用成功回调的问题。
    • removeStorageSync / clearStorageSync 不再用异步操作模拟同步接口,改为明确提示不支持;请使用 removeStorage / clearStorage。
    • 修复 RN 样式选择器校验遗漏,不支持的伪类、伪元素与组合选择器会在构建时报错;补充 @font-face 不受支持的提示。
  • 跨端输出 Web

    • 修复 selectComponent / selectAllComponents 对动态 class、ID 与复合选择器的匹配,以及模板包装组件干扰查询的问题;修复节点查询空匹配和 selectViewport() 作用域问题。
    • 修复路由参数或目标页面校验失败后仍继续执行,以及 switchTab / reLaunch 部分场景回调异常的问题。
    • 修复音频 stop() / pause() 的事件语义及监听移除行为,避免停止操作误触发暂停事件。
    • 修复 nextTick 未等待 Vue 视图更新、scroll-view 内容区域被压缩导致滚动异常,以及表单重置值和 reset 事件数据不一致的问题。
    • 修复模板 filter 表达式处理及动态无障碍属性绑定,支持将 aria-role 转换为 role。
  • 跨端 API 与构建

    • 完善 Web / RN 不支持的选项、生命周期与 API 字段提示,并支持通过 implement 登记业务适配;修复事件通道、部分 API 错误信息与 off* 无参移除监听的行为。
    • 修复支付宝 page-container 的 beforeleave 事件名称转换,以及支付宝 / Web 框架默认样式覆盖业务样式的问题。
    • 修复 @mpxjs/fetch 预请求更新链路在请求失败时产生额外未处理 Promise rejection 的问题。
    • 修复 .mpx 样式条件编译误处理非样式区块的问题;非 <style> 区域使用样式条件指令时明确报错,并修复 Stylus 裁剪后的缩进解析错误。
    • 修复 require.async 兼容 Webpack 5.109 位置信息 API、RN 分包模块转移至主包后的加载,以及小程序 chunk 全局对象冲突问题。
    • 稳定页面与组件映射的输出顺序,修复 UnoCSS 动态类简写条件与 WXS key 转义问题,并将相关 UnoCSS 依赖固定为 66.7.5。
    • 补齐 @mpxjs/api-proxy 的 lodash 运行时依赖,将 @mpxjs/pinia 的 Web 相关 peerDependencies 标记为可选。

📦 Packages