工具盒子 Logo
🏘首页
📦归档
🏷标签
🏖动态广场
🧰关于
登录 →
工具盒子 Logo
🏘首页 📦归档 🏷标签 🏖动态广场 🧰关于
登录
  1. 首页
  2. 开发工具
  3. 跨平台开发框架-valdi

跨平台开发框架-valdi

  • 开发工具
  • 发布于 2025-11-12
  • 3 次阅读
Administrator
Administrator

🧬 什么是 Valdi?

Valdi 是 Snapchat 开源的 TypeScript-First 跨平台 UI 框架,用 TSX 写声明式界面。

编译后直接生成 iOS / Android / macOS 原生 View,既无 WebView,也无 JS Bridge,性能拉到原生级,却能享受 毫秒热重载 和 npm 生态。

一句话:React 的手感,原生的速度。

🎯 为什么 Snapchat 要自己造轮子?

故事得从 2016 年说起。Snapchat 用户数爆炸,功能迭代越来越快:

  • React Native 刚出,性能瓶颈明显,动画掉帧、List 滑动卡顿;
  • Flutter 尚未发布,自绘引擎对原生组件的"像素级模仿"让 Snap 担心体验割裂;
  • 纯原生开发又意味着 iOS/Android 两套代码,Feature Flag 管理痛不欲生。

于是 Snap 决定"梭哈"——拉起一支小分队,用 TypeScript 写 UI,再让编译器直接吐出 OC/Swift + Java/Kotlin 的原生控件,彻底绕过 JS Bridge。

内部代号 "Valdi"(源自北欧神话的"力量之神"),目标只有一个:让一份代码跑得和原生一样快。

8 年过去,Valdi 经历了 200+ 版本、5000+ 次 MR、日活 8.5 亿用户"在线毒打",终于打磨成 Snap 的"定海神针"。现在,它开源了。

⚔️ Valdi 的核心优势

维度 Valdi 做法 收益
语言 TypeScript + TSX React 开发者零成本
渲染 编译 → 原生 View 0 桥接,原生帧率
性能 自动视图回收、增量渲染、多线程 JS 1 万条聊天滑动内存仅涨 7 MB
热重载 文件保存 → 200 ms 内刷新 不丢状态、不重启 App
类型安全 自动生成 TS ↔ 原生绑定 编译期就堵空指针
混合集成 双向嵌入,随用随迁 老项目可一页一页渐进替换

🛠️ 5 分钟跑起来:iOS & Android 实战

① 前置依赖(一次性)

brew install bazel node
npm i -g typescript tsx
git clone https://github.com/Snapchat/Valdi.git
export PATH=$PWD/Valdi/toolchain:$PATH

② 创建工程

valdi new AwesomeApp
cd AwesomeApp

③ 写个组件(src/ui/Home.tsx)

import { Component } from '@valdi/core';

export class Home extends Component {
  onRender() {
    return (
      <view backgroundColor="#FFFC00" padding={20}>
        <label value="Hello Valdi 🎉" fontSize={18} />
        <button title="点我" onPress={() => alert('来自原生按钮!')} />
      </view>
    );
  }
}

④ 跑起来

# iOS(模拟器)
cd ios && pod install && cd ..
valdi dev --ios
# 用 Xcode 打开 ios/*.xcworkspace ▶︎ Run

# Android
valdi dev --android
# Android Studio 打开 android/ ▶︎ Run

保存文件 → 200 ms 内看到刷新,break point 直接断在 TS 源码。

📊 Valdi vs React Native vs Flutter

维度 Valdi React Native Flutter
渲染 原生 View JS Bridge + 原生组件 Skia 自绘
语言 TypeScript JavaScript / TypeScript Dart
性能 原生帧率 桥接损耗 高但非原生
包体积 +1.8 MB +3~5 MB +4~7 MB
热重载 200 ms 1 s+ 500 ms
Web 支持 2026 Q2 ✅ ✅
生态 初建,npm 通用 成熟 丰富
混合集成 随用随迁 复杂 需 Flutter Engine

⚠️ 当前局限 & 风险

限制 官方 Roadmap
仅macOS / Linux开发 Windows 版 2026 Q1
Web
尚未支持 2026 Q2
UIKit / Android View 只适配完 SwiftUI / Compose 进行中
复杂图表、地图需自桥 社区共建
Beta-0.0.1,API 可能微调 正式版 2026 Q1

建议:先在独立模块或小业务试水,别 all in。

🏁 写在最后:Valdi 能不能成为下一个主流?

React Native 有生态护城河,Flutter 有自绘性能,但 Valdi 走出第三条路线:

把"TypeScript 的研发效率"直接编译成"原生 View 的运行性能",让跨平台第一次不妥协。

8 年实战、8.5 亿用户、4.2 k star,Snapchat 已经把坑踩完。
现在,轮到你上场了。

  • 仓库地址 👉:https://github.com/Snapchat/Valdi
标签: #移动端 1 #MacOS 1 #Linux 1
相关文章

跨平台开发框架-valdi 2025-11-11 11:02

🧬 什么是 Valdi? Valdi 是 Snapchat 开源的 TypeScript-First 跨平台 UI 框架,用 TSX 写声明式界面。 编译后直接生成 iOS / Android / macOS 原生 View,既无 WebView,也无 JS Bridge,性能拉到原生级,却能享受

Git+Gitea完整使用教程 2025-11-11 10:17

Git+Gitea完整使用教程 这份教程专为新手设计,全程结合 Gitea 服务器,从「安装配置」到「日常开发」「团队协作」,步骤清晰、无专业黑话,跟着做就能上手! 一、前期准备:安装 Git + 配置身份(必做) 1. 安装 Git(不同系统对应步骤) Git 是本地操作工具,必须先安装才能和 G

目录
  • 工具盒子公众号
Copyright © 2025 toolhz.cn All Rights Reserved
粤ICP备2025427282号
gongan beian 粤公网安备44030002008642号