就在前几天,字节跳动开源的"大杀器"--Lynx.js 火了。
号称要把 Vue 带进原生世界,让全球 200 万 Vue 开发者直接"零成本"变身 Native 工程师。

Weex 之后,Vue 移动端「空白十年」
严格来说,Vue 官方从未发布过名为 "Vue Native" 的框架。
2017 年阿里 Weex 曾让 Vue 写原生成为现实,但维护力度递减;
2018 年社区出现的**「vue-native-core」**只是基于 React Native 的薄层封装,2021 年便停更。
自此,Vue 开发者想在移动端打出**「原生体验」**这张牌,只能投向第三方方案:
- NativeScript-Vue
- Ionic Vue + Capacitor
- uni-app / uni-appx
老牌选手集体升级------「Vue Native」储备军
就在字节 Lynx 刷屏的同一个月,几条「低调却重磅」的更新悄悄发布:

- NativeScript-Vue 3.0 正式支持 Vite 热重载 与 esbuild 构建,启动时间从 10s 级降到 1s 级;全新
@nativescript/tailwind让原生控件也能用 Tailwind 语法,开发体验直追 Web。

- Ionic Vue 7 带来 Standalone Components ,完全摆脱 Angular 影子;配合 Capacitor 5 的 background-runner 插件,可在后台线程跑 JS,卡顿问题大幅缓解。

- uni-app 正式开放 uni-appx ------ 把 Vue SFC 编译成 Kotlin/Swift 的原生代码,脱离 WebView,性能对标 Flutter;华为、阿里小程序已率先接入。
换句话说,「Vue 写原生」这条赛道从未消失,只是从「单选题」变成了「多选题」。
黑马入场:字节 Lynx 的「王炸」在哪里?
与上面「WebView → 原生」的渐进路线不同,Lynx 一出生就是原生渲染 + 双线程架构:

- UI 线程:自研 PrimJS 引擎 + Rspeedy(Rust 版 Rspack)→ 首帧瞬间直出。
- 后台线程:跑业务逻辑、网络请求,复杂计算不卡界面。
- 框架中立 :模板语法依旧是 HTML/CSS,但渲染端是 iOS/Android 原生控件,性能与 Flutter 同一梯队。
- 真实战绩:TikTok 搜索、直播、剪映(CapCut)部分页面已用 Lynx 重构,月活 10 亿+ 场景验证。
更关键的是,Lynx 团队公开喊话:
"We'd love to see Vue on Lynx. PRs are welcome!"

于是 GitHub 出现 vue-lynx-prototype ,目标只有一个------让 Vue SFC 直接编译成 Lynx 的双线程包。
抢先尝鲜:Vue + Lynx 代码长什么样?
下面给出一段可直接跑通 的 Hello World 示例,方便大家感受「Vue 语法 + Lynx 原生渲染」的写法。
注意:<view>、<text>、<image> 为 Lynx 原生标签,会被编译成对应平台的真实组件;
其余语法与标准 Vue 完全一致。
html
<!-- HelloLynx.vue -->
<script>
// 支持 ESModule,可直接 import 图片、JSON 等静态资源
import lynxLogo from './assets/lynx-logo.png'
export default {
name: 'HelloLynx',
data() {
return {
title: 'Hello Vue-Lynx',
msg: '双线程原生渲染,首帧直出!',
count: 0
}
},
methods: {
increment() {
this.count++
// 这里运行在后台线程,不会阻塞 UI
console.log(`[background] count = ${this.count}`)
}
}
}
</script>
<template>
<!-- <view> 等价于原生容器,支持 flex 布局 -->
<view class="container">
<!-- <image> 会被编译成 UIImageView / android.widget.ImageView -->
<image :src="lynxLogo" class="logo" />
<!-- <text> 对应 UILabel / TextView,只能包裹文本 -->
<text class="h1">{{ title }}</text>
<text class="p">{{ msg }}</text>
<!-- 事件绑定与 Web 一致 -->
<button class="btn" @click="increment">
点我:{{ count }}
</button>
</view>
</template>
四种技术路线,怎么选?
-
NativeScript-Vue
渲染 :真正的iOS/Android原生控件
性能天花板 :★★★★(接近原生)
开发体验 :刚接入Vite,秒级热重载+Tailwind支持,"写Vue就像写 Web"
生态/插件 :直接调用原生API,Cordova/Capacitor插件也能复用
适合场景 :需要100%原生UI和原生能力,且团队对NativeScript无抵触 -
Ionic Vue
渲染 :WebView(可叠加 PWA)
性能天花板 :★★★(足够展示类、电商类应用)
开发体验 :最贴近Web,组件库成熟,一键生成App/小程序/PWA
生态/插件 :靠Capacitor打通相机、蓝牙、推送等原生功能
适合场景 :追求"同一套代码覆盖Web+多平台小程序+App",对极致性能不敏感 -
uni-app / uni-appx
渲染 :默认WebView,uni-appx可编译为Kotlin/Swift原生代码
性能天花板 :★★★☆(uni-appx可到 ★★★★)
开发体验 :CLI、云开发、插件市场一条龙,国内文档最友好
生态/插件 :微信、支付宝、百度、QQ、抖音小程序全覆盖
适合场景:业务主战场在国内,需要一次发布多端小程序,同时 App 也要能上架 -
Vue + Lynx(社区原型)
渲染 :真正的双线程原生渲染(iOS/Android)
性能天花板 :★★★★☆(TikTok 亿级验证)
开发体验 :即将对接Vite/Rspeedy,目前需手动配置;生态几乎为零
适合场景 :从0开始的新项目、对首帧和动画极度挑剔、字节系流量场景或愿意共建生态的团队
一句话总结:
- "现在就要" → 选
1或3 - "最像 Web" → 选
2 - "性能极致 + 愿意尝鲜" → 冲
4
「Vue Native」真的要来了?
- 如果你今天就要上线 ,NativeScript-Vue 3 的 Vite 版已是生产可用;uni-appx 则适合国内小程序+App 一起发。
- 如果你追求极致性能 且能接受早期生态,Lynx 社区正在招募贡献者:编译器、路由、DevTools 、TypeScript 声明......每个 PR 都可能成为官方标准。
也许再过一年,我们不用再讨论「该选哪个框架」------
npm create vue-native@latest一条命令,自动生成
Lynx + Vue双线程模板,或者
NativeScript-Vue的Vite脚手架,亦或
uni-appx的原生工程。
无论哪条路线,「Vue 写原生」不再是空白 ------Weex 的遗憾,终将在 2025 被填补