大学老师在一个课上说过一个事情,大致表述为:
Web已死,Internet永生 --> App已死,Web永生
当时没什么概念,什么web,什么app,死了生了的。但随之知识的深入,逐渐有了深刻的理解。
前一句是《连线》杂志的话,有一点时代性了。后者我觉得就是,用web技术来构建gui,天然是跨平台的。Web的UI框架拥有强大的复用性,相较于用传统的GUI开发工具开发不同平台的应用,web框架支持跨平台的话,就可以实现 “Write Once Run Anywhere”。😎
-
原生客户端开发工具:功能最强大,最兼容,但是要同时招聘三个客户端(桌面,网页,移动)开发人员,或者更多(平台细分,iOS,Android)。
-
WEB:功能弱,但只需要招聘一个web开发人员,然后不同的build工具就好了。
之所以用web的UI做各种客户端,只是为了满足降低开发成本,另一方各种框架也正在成熟发展。
技术是种子,市场是土壤,资本是化肥和农药。巨硬搞过很多超前概念的产品,不是说技术不够,是市场不适合,不给你发力的机会。比如Web Assembly
,可能很有前景,但目前还不行。
跨全平台可以说是一个程序员的终极梦想,但是目前基于web框架构建的跨平台应用,各种移动app本质就是套壳浏览器,内部使用webView,这好像是绕弯子行为,但它的低门槛和低成本就是存在的必然性。
而如今,谷歌的flutter,苹果随后紧接着出了swiftui,然后kotlin的compose,java依托graal升级javafx
Web大抵是老了,各种想要支持原生的跨平台UI框架正在预热。自绘引擎时代已经有雏形了。
我制作了一个表格,简单的描述一下当下的跨平台框架
Web | 桌面端 | iOS | Android | Linux | 语言 | 备注 | |
---|---|---|---|---|---|---|---|
Flutter | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Dart | 主要还是跨移动端 |
Electron | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | JS | 最适合web和桌面端 |
MAUI | ✔️ | ✔️ | ✔️ | ✔️ | C# | 设计基于安卓,其他平台向其靠拢 | |
Blazor | ✔️ | ✔️ | C# | 前后端集成 | |||
Unity/Mono | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | C# | |
Qt | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | C++ | 主要桌面跨平台 |
Tauri | ✔️ | ✔️ | ✔️ | ✔️ | ✔️ | Rust |
Java、Python和JS,天生就是跨平台的语言,所以他们也不存在怎么样的“跨平台框架”,简要写一下JS相关的几个热门框架。
JS | 模板语法 | 案例 | 备注 |
---|---|---|---|
React-native | React | 抖音,美团,京东,爱奇艺 | 不支持小程序 |
uniapp | vue | 大众点评,小米商城 | 多webview模式,支持小程序 |
Ionic | Angular | NHS,bobcat | 单webview模式,支持小程序,Vue, |
来自overflow developer 2023的数据,排名第一是.NET没截到。
结语
我觉得无论如何,最后都会向wasm概念靠拢,大一统才是趋势啊。没有任何人想对不同操作系统开发不同的适配应用,成本和风险都太高,不过目前仍然还是web占据跨平台的赛道,比如election,react-native还是主流。
虽然现在让我选我还是选自由的web,个人兴趣在此,也偏向桌面开发,但如果我有移动端需求,我可能会选flutter了。
Web死而复生,生而又死,虽是调侃,但也是否定之否定之理啊🤣