字节跳动近期宣布开源其自研的跨平台 UI 框架 Lynx,该框架已在 TikTok 等应用中广泛使用,旨在帮助 Web 开发者利用现有技能,通过一套代码同时构建移动端原生界面与 Web 端界面。
Lynx 官网:https://lynxjs.org/
Lynx 框架简介
Lynx 是一个面向多端应用开发的高性能 UI 框架,支持使用 Web 标记语言、CSS 和 JavaScript 创建原生跨平台移动应用。其核心目标是为开发者提供接近原生体验的跨平台开发能力,提升开发效率和应用性能。
Lynx 的核心特性
1. 双线程架构
Lynx 采用静态强制划分用户脚本的运行环境,将用户脚本拆分为两个独立的运行时:主线程运行时和后台运行时。主线程运行时由专为 Lynx 优化的 JavaScript 引擎驱动,负责处理启动和高优先级事件;后台运行时作为用户代码的默认执行环境,确保主线程的低负载与非阻塞状态。
2. 首帧直出(IFR)
通过短暂阻塞主线程,Lynx 确保界面首帧一次性完整呈现,避免空白界面,为用户带来即时响应的流畅体验。
3. 主线程脚本(MTS)
Lynx 支持一小段静态调度的代码在主线程运行,用于处理高优先级事件和手势行为,实现原生般的交互触感。
4. 原生 CSS 支持
Lynx 原生支持 CSS 动画、过渡效果、选择器、变量,以及现代 CSS 视觉效果,如渐变、裁剪和遮罩,方便开发者进行界面设计。
使用 Lynx 构建应用
开发者可以使用熟悉的 Web 技术栈(HTML、CSS、JavaScript)在 Lynx 上进行开发。Lynx 提供了灵活的布局引擎,支持弹性盒布局(Flexbox)、绝对/相对定位、百分比尺寸和动态内容自适应等功能。
此外,Lynx 支持热更新和运行时热重载,使得 UI 调试和功能更新更加灵活高效。
Lynx 的性能表现
在实际应用中,Lynx 团队发现,从 Web 迁移到 Lynx 的界面普遍能够显著缩短启动时间,达到 2 至 4 倍的提升。内部性能测试显示,在 iOS 平台上,Lynx 的表现与同类技术不相上下;而在安卓平台上,Lynx 则持续保持领先地位。
Lynx GitHub开源地址
Lynx 项目已在 GitHub 上开源,地址为:https://github.com/lynx-family/lynx。开发者可以通过提交 Issue、Pull Request 等方式参与项目的开发和优化,共同推动 Lynx 的发展。