Skip to content

跨平台技术比较和选型指南

Updated: at 12:20 PM

如有错误请指出,我核实后改正。 以下排名不分先后,按照我的熟悉排序。

MP 相关的跨平台方案

小程序跨平台框架已经慢慢发展成为全端框架了,学会了总是有点用的。

Uniapp

https://uniapp.dcloud.io/ 小程序出现之前只知道他们公司的 5+Runtime,说实话在这之前我一直觉得跨平台没什么意义。直到有一天要写小程序,直到有一天要小程序和 H5 双版本的需求,才感觉这种框架存在的意义,减少了一半的工作量都不止。因为我对 Vue 比较熟悉,而且官方有 UI 库和插件市场,单位时间内出货率更高(不会写的就抄),在这里感谢各位无私奉献的大佬。

Taro

https://taro-docs.jd.com/taro/docs/README 说实话没实际做过项目,之前只支持 React 语法的时候跑过一些 Demo,后来是因为没有官方组件库,我没那么多时间自己做组件,而且我对 Vue 比 React 熟悉,所以就被我放弃了。现在有了 Taro UI,同时支持 React 和 Vue,尤其是最近支持 React Native 了,大家可以试试。

小程序框架比较

框架写法案例腾讯阿里字节快手百度京东360快应用webAPP活跃
UniappVue丰富支持支持支持支持支持支持支持支持支持支持活跃
Taro通用丰富支持支持支持支持支持支持不支持不支持支持支持活跃
vue miniVue支持支持支持支持支持支持支持支持支持支持活跃
Mpxwxml支持支持支持不支持支持不支持不支持不支持支持不支持活跃
MINA(官方)wxml丰富支持不支持不支持不支持不支持不支持不支持不支持不支持不支持活跃
kbone通用支持不支持不支持不支持不支持不支持不支持不支持不支持支持活跃
wxawxml支持不支持不支持不支持不支持不支持不支持不支持不支持不支持活跃
omiomi支持不支持不支持不支持不支持不支持不支持不支持支持不支持活跃
RaxReact支持支持支持支持支持不支持不支持不支持支持支持不活跃
remaxReact支持支持支持不支持不支持不支持不支持不支持支持不支持不活跃
Tinawxml支持不支持不支持不支持不支持不支持不支持不支持不支持不支持不活跃
anu(nanachi)React支持支持支持不支持支持不支持不支持不支持支持不支持不活跃
Chameloncml支持支持支持不支持支持不支持不支持支持支持支持不活跃
wepyVue丰富支持不支持不支持不支持不支持不支持不支持不支持不支持不支持不活跃
mpvueVue丰富支持不支持不支持不支持不支持不支持不支持不支持支持不支持不活跃
megaloVue支持支持不支持不支持支持不支持不支持不支持不支持不支持不活跃
OkamVue支持支持支持不支持支持不支持不支持不支持不支持不支持不活跃

各框架支持图更新于2024年8月13日,其实看到各个框架的支持图,选型还是比较简单的。 只要不是活跃项目都建议别用,迟早是个坑。只更新 README 算活跃吗?

只做微信随便选。需要导出 APP,Uniapp、Taro 二选一

APP 相关的跨平台方案

Flutter

https://flutter.dev/ 不会 Flutter 都不好意思说我是时代弄潮儿,弄到最后咸鱼的大佬们升官发财了,我还在找工作的路上。讲真的第一次用的时候真的很惊艳,从没有过的感觉,不过现在声明式语法烂大街了,就不觉得惊艳了。现在最让我惊艳的就是生态,你能想到的端,Flutter 都能编译出来。但是这个 Flutter web 是最令我印象深刻的,打开控制台,整个网页就是个 Canvas,画布玩家恐怖如斯。

React Native

https://reactnative.dev/ 最流行的手机 APP 跨平台方案了吧,褒贬不一,有些大厂已经放弃了。但是不得不说,当你做跨平台 APP 不知道选什么的时候,选这个准没错。

Hippy

https://hippyjs.org/ 据说比 React Native 快,还比 React Native 小,鹅厂在手机 web 这方面的功底可谓是非常深厚,X5 内核大名鼎鼎。看起来用户都是鹅厂用户,厂外人员持续观望中。

.NET MAUI

https://docs.microsoft.com/en-us/dotnet/maui/what-is-maui mobile 端其实就是之前 C# 开发者都熟悉的 Xarmain.Form。 总的来说能用,但不好用。希望微软不要弃坑,给大家多一种选择。

Jetpack Compose & SwiftUI

https://developer.android.google.cn/jetpack/compose 声明式语法,听到声明式是不是觉得非常熟,自从跨平台声明式 UI 框架 Flutter 火了以后,iOS 的原生 UI 框架 SwiftUI 和 Android 新一代原生 UI 框架 Jetpack Compose 都变成了声明式 UI 框架了。 但是论体验,Xcode 对 SwiftUI 的支持还是更好点,Android Studio 对 Jetpack Compose 的 支持还是慢了点。

选型推荐

React Native、Flutter 二选一

桌面相关的跨平台方案

Electron

https://www.electronjs.org/releases/stable 现在已经有基于 Vite + React 的方案了,开发体验不错,但是运行速度仁者见仁了。

NW.JS

https://nwjs.io/ 对他唯一的了解就是微信开发者工具是用这个框架写的,对比 vscode 是 Electron 写的,看来都可以作为企业级复杂项目的选型,看个人喜好了,我觉得 Electron 更火一点。

Desktop support for Flutter

https://flutter.dev/docs Flutter 手机开发已经从黑走到红,从红又走到黑了,但是 Desktop support for Flutter 才刚刚发布不久,持续观望吧。 Flutter for Web 直接放弃吧,前端娱乐圈已经饱和了。

React Native for Windwos + macOS

https://microsoft.github.io/react-native-windows/ React Native for Windows + macOS 离 Electron 还差一截,持续观望吧。

.NET MAUI

微软下一代跨平台框架,老一代的 C# 开发者人数众多且稳定,或许能再吃一波微软生态红利。

Compose for Desktop

https://www.jetbrains.com/zh-cn/lp/compose/ 已经正式发布了,目前除了 Jetbrains Toolbox 没有商用案例。也许对安卓开发者吸引力比较大,毕竟 Kotlin 用户大部分是安卓开发者,Compose 也是新一代安卓开发技术。 至于 Compose for Web 就不用看了,上边的 Flutter for Web 都还没盘活呢。

JavaFX

https://wiki.openjdk.java.net/display/OpenJFX 如果说 Java 老矣尚能饭否,Java GUI 直接就是挂了,救不活的那种。 官方宣布除了 JavaFX 其他都不维护了。但是JavaFX 又迟迟无法接棒 Swing。Jetbrains 甚至让 Swing 焕发了第二春。

Qt

https://www.qt.io/ 作为个人用户来说这个用户协议有点难受,不过个人用户不多,企业用户不在乎这点钱。 现在有了 Qt for Python,上手难度比 C++ 低了很多。

选型指南

如果你是 web 开发者,可以毫不犹豫的选 Electron,当然 NW.JS 也是一中选择。 Java 开发者已经没有选择的余地了,新项目直接上 Fx,稍微学一下 Scene Builder 就行,老项目就维持 Swing。 .NET MAUI 还没发布,如果你公司只做 Windows desktop 而且你是** C# 开发者,WPF 依然是目前最好的选择。** React Native for Windwos + macOS 跑起来没什么问题,对 native API 的支持还是差了一些,基于 Web 的技术栈目前 Electron 更完善。 Compose for Desktop 这张大饼已经摊开了,至于熟不熟还不敢说,看谁敢做第二个吃饼的人。 Desktop support for Flutter 完成度不错,但是还没正式发布,技术雄厚的大厂还没踩完坑,不建议商用。 笼统的说,出于便捷性和拓展性的需求,传统 desktop UI 框架最终都走向了 xml 语法。html 开发者对 xml 很熟悉,有那么点大前端的意思了。 或许不久的将来,WebAssembly 成为主流,Javascript 不再统治前端。更多其他语言的开发者一起共享和丰富前端生态,让 web 的性能更上一层楼。到那个时候,就不需要区分原生还是 web 了。