当前位置: 首页 > news >正文

Valdi:Snapchat 开源的新一代跨平台 UI 框架

🧩 Valdi:Snapchat 开源的新一代跨平台 UI 框架

“用 TypeScript 写出原生 UI,跨平台但不失性能。”

2025 年初,Snapchat(Snap Inc.)正式开源了其内部使用近 8 年的跨平台 UI 框架 —— Valdi
这款框架的出现,给已经“卷了多年”的跨平台开发领域(React Native、Flutter、Compose Multiplatform、Qt、Tauri…)带来了新的声音。


一、背景:跨平台 UI 的老问题

过去十年,跨平台技术经历了几个阶段:

阶段技术代表特点问题
WebView 容器Cordova / Ionic快速上手性能差、交互不自然
JS 桥接渲染React NativeJS 写 UI,调用原生组件桥接通信频繁、性能瓶颈
自绘渲染引擎Flutter自己绘制像素、跨平台一致性好引擎大、内存占用高、非原生控件
Compose MultiplatformJetBrainsKotlin 全家桶、原生 API平台局限,生态小

Snapchat 团队也经历过相似的痛点。
他们需要一种方式 ——
既保留 原生视图的性能与体验,又能 用统一语言快速构建多平台 UI
于是,Valdi 诞生了。


二、Valdi 的设计原理

Valdi 的核心理念可以用一句话概括:

“声明式 + 编译期生成原生视图”

也就是说:

  • 你使用 TypeScript + TSX 语法编写界面;
  • Valdi 的编译器会将其编译为各平台的原生视图代码
  • 运行时 没有 WebView,也没有 JS Bridge

🔧 原理拆解

  1. 声明式 UI 层(TypeScript)
    开发者使用 TS 编写组件,语法风格与 React 类似。

    import { Component } from 'valdi_core/src/Component'class HelloValdi extends Component {onRender() {<view backgroundColor="#FFFC00" padding={20}><label color="black" value="Hello, Valdi 👻" /></view>}
    }
    
  2. 编译层(Valdi Compiler)
    解析 TSX → AST → 转译为 Swift/Kotlin/ObjC 等原生代码。
    同时生成类型绑定(Type Bindings),实现自动双向通信。

  3. 原生层(Native Runtime)

    • Valdi 运行时基于 C++,负责布局、渲染、回收等核心机制;
    • 所有组件均映射为平台原生控件(如 UIView, TextView);
    • 提供统一的生命周期管理与性能优化机制。
  4. 视图回收机制(View Recycling)
    类似 RecyclerView 的思想:
    Valdi 维护一个全局 View Pool,通过回收与复用原生视图来减少创建成本。

  5. 视口感知渲染(Viewport-Aware Rendering)
    仅渲染当前视口内的组件,非可见区域不绘制,从根本上减少 UI 布局压力。


三、架构构造与模块划分

Valdi 主要包含以下核心模块:

模块功能说明
valdi_core框架核心组件系统、渲染树、事件系统
valdi_runtimeC++ 原生运行时布局、内存管理、视图池
valdi_compilerTypeScript 编译器将 TSX 转译为原生层绑定
valdi_bridge语言绑定层生成 Swift/Kotlin 接口
valdi_devtools开发者工具热重载、调试、VS Code 插件
valdi_ui内置组件库Button、Label、ListView 等

结构上,它更像 React + Flutter + SwiftUI 的混合体

  • 从 React 借鉴了声明式组件模型;
  • 从 Flutter 吸收了跨平台一致性理念;
  • 从 SwiftUI 学到了布局与声明式 DSL 设计。

四、Valdi 的主要优点

✅ 1. 真正原生性能

Valdi 不走桥接路线,生成的 UI 是原生控件,因此性能与体验几乎等同手写 Swift/Kotlin。

✅ 2. 熟悉的 TypeScript 语法

对于前端开发者而言,Valdi 的上手门槛极低。
同时 TypeScript 的类型系统也保证了跨语言的安全性。

✅ 3. 跨平台一致性

一次开发可生成 iOS、Android、macOS 界面,未来计划支持更多平台。

✅ 4. 高效渲染与布局

  • 独立组件渲染(局部更新)
  • C++ 布局引擎
  • 可见区域优先渲染
  • 视图复用机制

这一系列机制让大规模 UI(例如聊天、feed 流)也能保持高帧率。

✅ 5. 无缝原生扩展

Valdi 可嵌入原生 App,也可在其中嵌入原生模块,实现混合架构。


五、Valdi 的不足与挑战

⚠️ 1. 生态尚不成熟

Valdi 目前仍处于 Beta 阶段,文档、第三方组件、社区生态都比较初期。

⚠️ 2. 学习曲线存在“编译期思维”

不像 React Native 的即时 JS 执行,Valdi 是编译型框架。
对调试和构建理解不足可能导致初期上手难度略高。

⚠️ 3. 框架复杂度较高

Hacker News 上有开发者评论它“over-engineered”:
C++ + TS + Swift/Kotlin 混合带来灵活性的同时,也增加了维护与构建复杂度。

⚠️ 4. 社区与案例较少

除 Snapchat 自身外,尚未看到大规模第三方项目采用。
生态成长速度将决定其未来成败。


六、Valdi 与主流框架对比

特性FlutterReact NativeCompose MultiplatformValdi
UI 渲染机制自绘引擎JS 桥接原生Kotlin 原生TS 编译原生
性能
开发语言DartJS/TSKotlinTypeScript
原生一致性一致但非原生控件依赖桥接原生控件
成熟度低(Beta)
调试体验优秀成熟一般良好(VS Code 支持)

七、总结:一个值得关注的“下一代跨平台方案”

Valdi 是 Snapchat 的野心之作。
它尝试解决跨平台开发中最核心的矛盾:

“如何同时获得跨平台效率 + 原生性能。”

虽然目前仍处在起步阶段,但其 理念先进、架构清晰、技术路线新颖
对于探索新一代开发栈的创业团队、工具开发者来说,Valdi 值得深入研究。


✨ 写在最后

  • 📦 官方仓库:github.com/Snapchat/Valdi
  • 📚 文档主页:docs.valdi.ai
  • 💬 讨论区:Hacker News Thread

“如果 Flutter 是 Google 的跨平台梦想,那么 Valdi 可能是 Snapchat 的跨平台现实。”

http://www.dtcms.com/a/596788.html

相关文章:

  • webpack 从零构建 Vue3
  • Next.js第二章(项目搭建)
  • 亚马逊 怎么做国外网站全国建设信息网
  • 算法 C语言实现—折半查找(二分查找)
  • 如何编辑企业网站网站前端和后台
  • 【期末网页设计作业】HTML+CSS+JS 香港旅游网站设计与实现 (附源码)
  • 配置DNS主从服务
  • 基于S函数的超螺旋滑模控制实现
  • LLM + TFLite 搭建离线中文语音指令 NLU并部署到 Android 设备端
  • wordpress 整站移植怎样在拼多多上卖自己的产品
  • AI训练成本优化,腾讯云GPU实例选型
  • 某地公园桥梁自动化监测服务项目
  • Spring Boot 中的异步任务处理:从基础到生产级实践
  • 渗透测试之json_web_token(JWT)
  • c加加聊天室项目
  • Buck电路中的自举电容取值计算
  • 媒体门户网站建设方案个人网页的内容
  • 从抽象符号到现实应用:图论的奥秘
  • 雷池 WAF 免费版实测:企业用 Apache 搭环境,护住跨境电商平台
  • Flutter .obx 与 Rxn<T>的区别
  • C++中的线程同步机制浅析
  • wordpress为什么被墙西安网站seo
  • 网站程序和空间区别电商平台是干什么的
  • 机器学习探秘:从概念到实践
  • 日志易5.4全新跨越:构建更智能、更高效、更安全的运维核心引擎
  • 百度网站名片搜索引擎技术包括哪些
  • Memcached flush_all 命令详解
  • 深入探索嵌入式Linux开发:从基础到实战
  • Java复习之范型相关 类型擦除
  • android6适配繁体