12k
All articles

什么是 Lynx.js?初学者指南

Lynx.js 是字节跳动推出的跨平台框架,基于 React、原生 CSS 和双线程架构,渲染真正的 iOS 与 Android 原生界面。

OpenReplay Team
OpenReplay Team
什么是 Lynx.js?初学者指南

如果你一直在使用 React 构建 Web 应用,并想知道这些技能是否可以迁移到原生移动开发——而无需学习 Swift 或 Kotlin——那么 Lynx.js 值得你关注。本指南将解释 Lynx.js 框架是什么、它如何工作,以及它是否适合你的下一个项目。

核心要点

  • Lynx.js 是字节跳动开发的跨平台 UI 框架,于 2025 年开源,可以从单一 JavaScript 代码库构建原生 iOS、Android 和 Web 应用。
  • 它采用双线程架构和原生渲染引擎,部分功能使用 Rust 实现,即使在 JavaScript 工作负载较重的情况下也能保持 UI 响应流畅。
  • 开发者可以编写真正的 CSS 语法,并通过 ReactLynx 使用熟悉的 React 模式,降低了前端工程师的学习曲线。
  • 生态系统仍处于早期阶段,因此 Lynx 目前最适合用于实验和个人项目,而非生产关键型应用。

什么是 Lynx.js 框架?

Lynx.js 是由 TikTok 背后的公司字节跳动开发的跨平台 UI 框架,于 2025 年开源。它允许你从单一 JavaScript 代码库为 iOS、Android 和 Web 构建原生应用程序。

关键区别在于:Lynx 不是ReactVue 这样的 Web 框架。它在类别上更接近 React NativeFlutter——这些工具旨在生成真正的原生 UI,而不是基于浏览器的封装。字节跳动在内部构建它来支持自己的应用,然后将其作为现有跨平台解决方案的替代方案公开发布。

Lynx.js 的工作原理:原生渲染和双线程模型

Lynx 使用原生组件渲染 UI,而不是 WebView。当你在 Lynx 中编写 <view><text> 元素时,它会在运行时直接映射到原生 Android 和 iOS 组件——类似于 React Native 的运作方式,但在架构上有一些差异。

最显著的是其双线程架构。Lynx 将 UI 渲染与应用逻辑分离,在独立的线程上运行它们。这意味着即使 JavaScript 在后台执行繁重的工作,你的界面也能保持响应。

Lynx 还配备了原生渲染引擎,部分功能使用 Rust 实现,在原生层面处理布局和绘制。你不会直接与它交互,但这正是该框架具有与传统混合方法不同的性能特征的原因。

受 Web 启发的开发者体验

尽管是原生渲染,Lynx 的设计让前端开发者感到熟悉。你可以使用真正的 CSS 语法编写样式——包括选择器、变量和动画——无需学习专有的样式 API。这相比 React Native 使用的有限 CSS 类子集是一个真正的优势。

React 支持通过 ReactLynx 提供,这是 Lynx 的官方 React 集成。如果你已经了解 React hooks 和组件模式,ReactLynx 可以让你直接应用它们。以下是官方文档中的一个最小示例:

import { useCallback, useState } from "@lynx-js/react"

export function App() {
  const [alterLogo, setAlterLogo] = useState(false)

  const onTap = useCallback(() => {
    "background-only" // runs this handler on the background thread
    setAlterLogo(!alterLogo)
  }, [alterLogo])

  return (
    <page>
      <view className="App">
        <view bindtap={onTap}>
          <text>Tap me</text>
        </view>
      </view>
    </page>
  )
}

注意 "background-only" 指令——它告诉 Lynx 在后台线程而不是主 UI 线程上执行该回调,这是双线程模型如何暴露给开发者的一部分。

Lynx 在设计上也是框架无关的。React 是目前主要支持的选项,但该架构的构建可以在未来容纳其他 UI 库。

Lynx.js vs React Native:关键差异一览

特性Lynx.jsReact Native
渲染方式原生引擎原生
CSS 支持真正的 CSS 语法有限的子集
线程模型双线程JS 线程 + 原生线程
框架支持React(计划支持更多)仅 React
生态系统成熟度早期阶段成熟

你应该学习 Lynx.js 吗?

如果你是一名 React 开发者,想要构建原生移动应用而不放弃 Web 技能,Lynx 是一个真正有趣的选择。仅 CSS 支持这一点就消除了 React Native 开发中的一个主要摩擦点。

话虽如此,Lynx 是新的且正在积极发展中。生态系统规模小,社区资源有限,预计会有一些粗糙的边缘。如果你今天需要生产稳定性,它不是正确的选择——但值得密切关注,随着框架的成熟,早期采用具有真正的优势。

最好的下一步是 Lynx 官方快速入门,使用 npm create rspeedy@latest 可以在不到十分钟内运行一个项目。

常见问题

我可以将 Lynx.js 与 React 以外的框架一起使用吗?

Lynx 在设计上是框架无关的,但 React 目前是通过 ReactLynx 集成唯一官方支持的选项。该架构的构建可以在未来支持其他 UI 库,尽管尚未发布其他绑定。目前,如果你想使用 Lynx 进行构建,React 是实际的选择。

Lynx.js 是否已准备好用于生产?

Lynx 仍处于早期阶段。字节跳动在内部生产环境中使用它,但公共生态系统还很年轻,社区资源有限,可能会有破坏性更改。它最适合用于实验、个人项目或原型设计。如果你的项目需要一个稳定、文档完善、具有广泛第三方支持的框架,React Native 或 Flutter 目前仍然是更安全的选择。

Lynx.js 的性能与 React Native 相比如何?

Lynx 使用部分用 Rust 实现的原生渲染引擎和双线程架构,将 UI 渲染与应用逻辑分离。与 React Native 基于 JS 线程的模型相比,这可以在 JavaScript 工作负载较重的情况下产生更流畅的界面。实际性能取决于具体应用,但架构设计使 Lynx 在响应性方面具有理论优势。

使用 Lynx.js 需要了解 Swift 或 Kotlin 吗?

不需要。Lynx 允许你完全使用 JavaScript 和 CSS 构建原生 iOS 和 Android 应用。你通过 ReactLynx 使用 React 模式编写组件,框架在底层处理原生渲染。不需要了解 Swift 或 Kotlin,尽管如果你需要编写自定义原生模块,它可能会有所帮助。

DevTools for the frontend

Gain Debugging Superpowers

Unleash the power of session replay to reproduce bugs, track slowdowns and uncover frustrations in your app. Get complete visibility into your frontend with OpenReplay — the most advanced open-source session replay tool for developers.

Star on GitHub12k

We use cookies to improve your experience. By using our site, you accept cookies.