跨平台框架
更新: 6/2/2025 字数: 0 字 时长: 0 分钟
除了后端以外,我个人还会一点Vue开发,再加上对前端技术的喜爱,我有时会去研究一下前端技术,其中一个我很好奇的点就是,Vue只能开发网页,那app和其他的程序是如何开发出来的呢?
前端由于需要大量的和操作系统进行交互,因此不同平台都有着自己的写法
常见的平台:
- web(网页)——Vue,React
- Android——Kotlin
- ios——swift
- Windows
- Linux
- 微信小程序(国内特供)
- 鸿蒙(半国内特供?)
而公司为了降低成本,大概率是不会一个端请一个人来进行开发和维护的
那么最后就产生了两个结果:
- 开发人员掌握多端开发技术(多语言多框架)
- 某个技术团队或个人提供一套可以多端开发的方案
很明显,第二种方案是开发者甚至公司都想要的
那么目前市面上常见的方案有什么呢?
大致其实也就两种:
- 使用浏览器进行套壳:可以使用web开发来完成多端开发,但性能会降低
- 使用一种语言去转译成其他端的语言:使用某种特定语言/框架开发,性能更好,但开发成本过大
这里说一下我体验过的框架
浏览器套壳方案:
- uniapp:国内框架,支持了小程序和鸿蒙,开发体验谁用谁知道
- quasar:国外框架,并非自己解决了跨平台问题,而是对现有的跨平台方案做了集成。不支持小程序和鸿蒙,体验感较好(我个人感觉甚至可以说是很好)
原生方案:
- react-native:国外框架,使用react,因此是使用web的方式开发多端
- native-script:国外框架,基于react-native,支持vue写法,本身还是使用web的方式开发多端
- kmp:国外框架,使用kotlin,由jetbrain支持,因此是使用Android的方式开发多端
- flutter:国外框架,Google开源,使用Dart语言进行开发,写法上感觉和JetpackCompose很像
- uniappx:国内框架,支持较全面,但是由于uniapp给人的开发体验不佳,而且一直没有正式版发布,因此不报太大希望
上面的框架我都大概的体验过,目前给我体验感最好的就是quasar(可能也是我比较熟悉Vue的原因),但是整体上都是不大尽人意,我目前比较看好kmm和kuikly,希望在一段时间后能够给我们一些亮眼的体验
原生
这个或许是在选择跨平台方案时第一个考虑的问题,原生的优势是高性能,而套壳的优势是低成本。
对于小公司来说低成本肯定更加重要,毕竟要活着嘛,但是作为大公司,性能就会显得更加重要了。
目前上面的开源方案比较成熟的是Flutter和Reactive-native,我相对了解Flutter一点,这里就简单的提一下Flutter。
Flutter的主要想法就是让各端的代码统一使用Dart编写,然后再由Dart通过渲染的方式再在其CPU或GPU上绘制出UI
除此之外,KMM也是一个不错的选择,但是KMM的关注点并非一套代码全部实现,而是共享逻辑代码
简单地说就是KMM希望使用Kotlin语言在一个共享的模块下写一些共享的代码(比如网络请求,逻辑计算等),然后再由各端去自己绘制UI,调用共享逻辑。
虽然Jetbrain也有推出自己的跨平台UI解决方案——ComposeMutlplatform,但是目前来看还是差些火候
(有趣的是,Flutter的Logo和Kotlin经常使用的一个将K的竖线由阴影藏住的Logo很像,不知道是不是有什么说法)