uni-app x 了解过吗?浅谈 ust + uvue 下的 uni-app x 是什么。

其实对于 uni-app x 我也没有深入研究,单纯是看到今天群里大家在讨论,就好奇这个「最佳跨平台解决方案」是什么?因为 uni-app 本身核心是小程序,难道这次要发力 App 了?

所以本次也是带着讨论的角度来展开,没什么深入技术分析,因为也没什么源码可以看到,主要从文档出发,从看官方介绍可以看到:

"在 App 端,uni-app x 在 iOS 编译为 swift、在 Android 编译为 kotlin 。没有使用 js 引擎、webview,完全达到了原生应用的功能、性能。"

那就是说这是一个将 uts 代码编译为原生代码去运行的框架,那在没有 js 引擎的情况下,是不是意味着基本大部分 npm 上的 js 库都不支持了?毕竟没有 js 引擎了,我也比较好奇 uni-app 用户应该是小程序开发居多,那么 npm 不兼容对选择的影响会有多大?

"uts 替代的是 js,而 uvue 替代的就是 html 和 css 。或者如果你了解 flutter 的话,也可以理解为 uts 对标 dart,而 uvue 对标 flutter。"

在使用 uts 这个基础上, uts 是否就和 Dart 一样,需要重新构建一套开发者语言生态?虽然 uts 和 js 类似所以成本会比较低,但是也需要「好心人」 or 「企业」本身去做这个事情,我想这个问题会是 uni-app x 是否持续存活的关键,毕竟大部分开发者要的是「开箱即用」,「用爱发电」这种事情只有极少数愿意去做。

"uvue 支持的 vue 语法,是按 vue3 实现的,uvue 支持的css语法,是 web 的子集,类似于nvue 的css,仅支持 flex 布局"

所以整个生态还是需要 Vue 和 JS 开发者们来参与,不兼容 Vue2 这个貌似问题不大?

如果编译适配真的做的不错,那么性能说不定对比 uni-app 会好很多 ,因为 weex 还是需要 jscore 和运行时的 OEM 转换,但是如果直接编译为原生 UI ,那就几乎可以说和原生 UI 一样的运行逻辑,我这样理解应该没错吧?

因为我没看到编译转换部分的代码,所以也只能猜测就是 ust 转为 kotlin 下的 Android View 去进行布局这样的理解,也就是运行时其实就是一个原生 App。

而之所以会用 uni-app ,从官方下图这段话看来,大概就是 uni-app 上太多性能问题填不了坑,所以开个新坑,用全新的模式来实现目的 ,过去治标不治本,现在开始从根做起,只是这段描述,现在看起来有点「回旋镖」的味道,感兴趣的可以挖历史老文:flutter、rn、uni-app比较 - DCloud问答

从官方给出的迁移指南上看,基本上难度还是在于 plugin 和 css 样式上,也就是如果以前你不用 uvue ,单纯用 uni-app 开发小程序和直接打包出 App 的话,我理解还不如重写,例如 uni-app x 里就不支持 uvue 页面和vue页面混写,你必须都是 uvue 。

另外,由于政策等限制,uni-app x 官方在打包后不提供热更新支持,这个也可以理解,可执行二进制文件的热更新不符合规范,官方如果内置就会导致上架问题,你可以自己二次开发,但是官方绝不能内置。

当然,因为 uni-app x 的特殊性,所以目前绝对性的开发只能用 HBuilderX ,如果你能做到用 txt 写代码那确实可以不用 HBuilderX ,不过 HBuilderX 的体验一直都是难以言喻就是了。

总的来看,它就是转译为原生,所以它即不是 weex 路线,也不是 flutter 路线,因为它既依赖于平台,又不依赖于中间运行时。

如果说 uni-app 的定位像是以小程序为主,App 为辅助,那么 uni-app x 更像是 App 为主,小程序为辅。

所遇 uni-app 这次尝试很大胆, 因为 2023 年了 App 市场其实还有多少余地?可以遇见,后续 uni-app x 会存在两端对齐的 UI 问题,weex/rn 走过的路,样式对齐和 OS 不同版本 API 兼容问题也会需要处理,例如:

在 Android 上调好的样式,在 iOS 上出现适配异常,因为不像是 Flutter 直接通过 GPU 绘制出一致 UI ,平台对齐一直是一个手工活,以前通过 webview 可以简单屏蔽,但是自己做就需要不同平台不同 OS 版本都去 if else ,是个大苦力活。当然,反过来看,这样也很好保留了本身的控件特性。

在我理解上,一家商业公司做这个,我觉得除非完全开源(不是半开源),然后基于社区大量投入去做运营,不然单靠内部开发去推进这件事情进度会很慢,因为这个项目的实现逻辑注定了它需要大量的适配工作,类似 Flutter ,而 Flutter 大量的 bug fix 和适配都来自社区的 pr,很多问题都是依靠社区贡献去修复。

当然,就像官方说的,如果你觉得 uni-app 已经性能够用了, 那其实完全不必考虑 uni-app x ,而就像大家说的, 我都用 uni-app 了,还考虑什么性能?

最后,其实今天更多是讨论的味道,其实 uni-app 的用户还是不少,我很好奇,有多少 uni-app 的用户愿意去使用 uni-app x ,这只螃蟹未来是否可以在跨平台领域横行?你愿意学习 ust 和 uvue 吗?

相关推荐
SameX4 分钟前
初识 HarmonyOS Next 的分布式管理:设备发现与认证
前端·harmonyos
M_emory_30 分钟前
解决 git clone 出现:Failed to connect to 127.0.0.1 port 1080: Connection refused 错误
前端·vue.js·git
Ciito34 分钟前
vue项目使用eslint+prettier管理项目格式化
前端·javascript·vue.js
成都被卷死的程序员1 小时前
响应式网页设计--html
前端·html
mon_star°1 小时前
将答题成绩排行榜数据通过前端生成excel的方式实现导出下载功能
前端·excel
Zrf21913184551 小时前
前端笔试中oj算法题的解法模版
前端·readline·oj算法
B.-2 小时前
Flutter 应用在真机上调试的流程
android·flutter·ios·xcode·android-studio
有趣的杰克2 小时前
Flutter【04】高性能表单架构设计
android·flutter·dart
文军的烹饪实验室3 小时前
ValueError: Circular reference detected
开发语言·前端·javascript
Martin -Tang4 小时前
vite和webpack的区别
前端·webpack·node.js·vite