Skip to content

v2.11.0

Choose a tag to compare

@hiyuki hiyuki released this 13 Jul 06:09
· 313 commits to master since this release

v2.11.0

✨ New Features

跨端输出 React Native

样式标准对齐

  • 支持容器文本样式向 Mpx 子树中的 text 节点透传,中间存在非 text 组件时不再中断,并支持 numberOfLinesellipsizeMode 向最近文本节点迁移。
  • 将 RN 业务节点默认盒模型对齐为 content-box,并新增 rnConfig.defaultBoxSizing 配置,减少固定宽高叠加 padding / border 时的跨端布局差异。
  • 新增 rnConfig.allowFontScaling 配置,用于统一控制 RN 文本是否跟随系统字体缩放。

样式简写能力

  • 扩展 gapinsetoutlinefont 等简写属性支持,并补齐 text-decorationbackground-positionbackground-size 等样式能力。
  • borderoutlinetext-decorationtext-shadowflex-flow 等无序简写按 CSS 规范根据值类型解析,合法值不再强制依赖固定书写顺序。
  • gaprowGapcolumnGap 支持百分比值,gap 简写展开后会按行列方向分别基于父级高度 / 宽度换算。

运行时样式能力

  • style / wx:style、CSS var、UnoCSS var 等运行时样式入口补齐 lineHeightfontFamilyflex、简写展开、background 等处理能力,与 class 样式能力进一步对齐。
  • 简写属性支持单个 CSS var,编译期无法静态判断时会保留到运行时解析。
  • 修复组件默认长属性反向覆盖用户简写属性的问题,border: 0margin: 0flex-flow 等写法可正确覆盖组件默认样式。
  • border-style: noneoutline-style: none 以及 border / outline 简写中的 none 统一在运行时清除对应宽度。

运行时性能优化

  • 优化 useTransformStyle 热路径,减少普通节点上的无效遍历、正则判断、对象分配与 transform 函数调用。
  • 优化 mpx-viewmpx-textmpx-simple-viewmpx-simple-textmpx-image 等高频基础组件渲染路径,降低 style / props 拆分、children 包裹、图片 source / style 构造等开销。
  • 优化 background 渲染链路,按字段拆分背景预解析、缓存图片尺寸、收敛背景尺寸状态更新,在 background 更新场景下更新耗时显著下降。
  • 优化文本样式透传链路,改为基于 context 的子树级透传,避免直接遍历并 clone 子节点。
  • 优化事件监听与内部 props 处理,减少小程序属性透传过滤、触摸事件映射等热路径对象分配。

运行时性能探针

  • 完善 @mpxjs/perf 包,提供 scopeStartscopeEndmarkmeasurestartendsetReportercreateConsoleReporter 等 API。
  • 新增 plugin.perf.enableplugin.perf.probes 配置,支持 framework / user 分组探针,并保证关闭态产物零残留。
  • RN 框架内置探针覆盖 viewsimple-viewtextsimple-text 渲染阶段以及 __getStyle 样式聚合流程。

模板与组件能力

  • RN 输出支持无值属性按布尔 true 处理,例如 <scroll-view scroll-y />
  • imagevideo 以及自定义内建组件支持本地静态资源路径。
  • image 组件支持本地 SVG 资源,并新增 is-svg 属性用于强制按 SVG 渲染。
  • createIntersectionObserver().observe() 支持传入 refs。
  • 新增 RN section-list 扩展组件,支持分组虚拟列表、自定义列表头尾与分组头尾、吸顶、下拉刷新、手势协同及 scrollToIndex()
  • picker 补齐 rangerange-key 动态更新和触发区域文本样式透传能力。
  • createSelectorQuery().select() / selectAll() 支持查询非 virtualHost 自定义组件的实体 host 节点。
  • 补充 built-in 组件与自定义组件的 displayName 传递,改善 RN 调试体验。

应用与开发能力

  • 新增 rnConfig.disablePageTransition 配置,支持关闭 RN 页面转场动画。
  • 补全 @mpxjs/api-proxy 中位置、系统、键盘、相机相关 API 的 TypeScript 类型定义。

跨端输出 Web

  • 优化 UnoCSS 注入顺序,将 uno.css 放到 App 样式之后,拉齐小程序中 UnoCSS 覆盖全局样式的行为。
  • 增强 Web 模板处理,支持 <import><template> 场景下的模板转译复用。

文档与开发体验

  • 新增 RN 运行时按需测速文档。
  • 更新 RN 组件、样式相关文档与 Mpx2RN Skill 知识库,补充模板、脚本、样式、JSON 配置、环境 API 与最佳实践参考。

🐛 Bug Fixes

跨端输出 React Native

样式与渲染

  • 修复 CSS 变量 fallback 校验不完整导致非法样式未被过滤的问题,并避免 CSS 自定义属性被误判为 RN 数值属性。
  • 修复 calc() 中百分比样式、hairlineWidthbox-sizing 等样式转换异常。
  • 修复 RN 运行时 lineHeightflextransform 等样式处理与编译期口径不一致的问题。
  • 修复 boxShadow 不生效以及 px 单位被错误处理的问题。
  • 修复 background-size: cover / containbackground-position 等背景相关计算异常。
  • 修复 text-decoration-style / text-decoration-color 未按 RN 平台能力正确校验和转换的问题。
  • 修复样式条件编译剥离后可能影响样式解析的问题。

文本与组件

  • 修复文本样式仅能传递给直接子文本节点的问题,改善跨组件文本样式继承表现。
  • 修复内建组件部分小程序属性未被过滤、透传到 RN 原生组件的问题。
  • 修复 RN 下自定义组件与 built-in 组件 displayName 传递不完整的问题。
  • 修复本地图片、视频资源无法通过模板静态 src 正确进入 webpack 资源处理的问题。
  • 修复 Android input 居中占位符场景的 confirm-type 行为异常,以及触摸移动时键盘意外收起的问题。
  • 修复 camera 权限被拒绝后在同一页面内反复请求的问题。
  • 修复 picker 数据与 range-key 更新后弹层内容未同步、触发区域样式处理不完整的问题。
  • 修复 picker-view-column 项高度计算和初始滚动偏移未同步导致的滚轮动画异常。

交互与 API

  • 修复 createIntersectionObserver().observe() 传入 refs 或多个 nodeRefs 时目标节点解析异常的问题。
  • 修复 getSystemSetting 被 promisify 包装导致同步 API 语义不一致的问题。
  • 修复 Android 初始化阶段安全区顶部值短暂为 0 导致的页面布局抖动问题。
  • 修复 RN 页面切换时页面级 navigationBarTextStyle 可能被导航栈状态栏配置覆盖的问题。

构建与运行

  • 修复 RN / Web 下 usingComponents 检查相关问题。
  • 修复 SourceMapConsumer 同步调用方式不兼容导致的构建异常。

跨端输出 Web

  • 修复 Web 端页面样式转译时 page 选择器匹配过宽的问题。
  • 修复 Web 输出模板处理相关问题。

国际化

  • 修复 i18n 字面量 key 在路径解析前未优先命中,导致包含特殊字符或数值形式 key 时解析异常的问题。
  • 修复 i18n key 解析结果为 NaN 时未正确回退到字面量查询的问题。

其他修复

  • 修复 URL query 解析时逗号被当作分隔符,导致目标页参数不完整的问题。
  • 修复 script setup 编译器中 formatCodeFrame 引用方式不兼容导致的报错。
  • 修复 CDN 文档拼写错误。

📦 Packages

  • @mpxjs/api-proxy: 2.10.21 => 2.11.0
  • @mpxjs/core: 2.10.24 => 2.11.0
  • @mpxjs/fetch: 2.10.21 => 2.11.0
  • @mpxjs/perf: 2.10.24 => 2.11.0
  • @mpxjs/pinia: 2.10.22 => 2.11.0
  • @mpxjs/size-report: 2.10.22 => 2.11.0
  • @mpxjs/store: 2.10.22 => 2.11.0
  • @mpxjs/unocss-plugin: 2.10.22 => 2.11.0
  • @mpxjs/utils: 2.10.21 => 2.11.0
  • @mpxjs/webpack-plugin: 2.10.24 => 2.11.0
  • @mpxjs/webview-bridge: 2.10.21 => 2.11.0

更多详情

可查看:https://mpxjs.cn/articles/2.11-release.html