字节跳动开源跨平台 UI 框架 Lynx:一套代码同时构建多端原生界面
字节跳动刚刚发布了最新开源项目 Lynx:
Lynx 是一套帮助 Web 开发者复用现有经验,通过一份代码同时构建移动端原生界面与 Web 端界面的技术方案。
Lynx 专为多样化、富交互的场景打造,它有着高性能、多功能的渲染引擎、性能优先的双线程 UI 编程范式、以及基于 Rust 的现代工具链等诸多特性。
Lynx 最具代表性的架构决策之一是静态强制划分用户脚本的运行环境,将用户脚本拆分跑在了两个独立的运行时上:
- 主线程运行时,它由PrimJS这个专为 Lynx 优化的 JavaScript 引擎驱动,有着独享的同步 UI 操作权限,用于处理初始启动和高优事件处理等任务
- 后台运行时,作为用户代码的默认执行环境,以确保主线程的低负载和非阻塞。
这一架构带来了 Lynx 的两大杀手锏:
-
首帧直出 (Instant First-Frame Rendering,IFR):用研表明:如果渲染足够快(而 Lynx 正是如此),那么在界面过渡时就无需多余的反馈。Lynx 通过短暂阻塞主线程,确保首帧一次性完整呈现,因为用户不会看到空白,可以给用户带来一种即刻响应的感知体验。
-
主线程脚本 (Main Thread Script,MTS):它是一小段静态调度的代码,被授予在主线程运行的权力,用于处理高优的事件和手势行为,非常适合那些要求极致跟手、快速响应的场景,以实现原生交互触感。
