uni-app x 是什么
uni-app x 是一个强大的跨平台开发框架
uni-app x 是一个庞大的工程,它包括uts语言、uvue渲染引擎、uni的组件和API、以及扩展机制。
uts是一门类ts的、跨平台的、新语言。uts在iOS端编译为swift、在Android端编译为kotlin、在Web端编译为js。
在Android平台,uni-app x 的工程被编译为kotlin代码,本质上是换了vue写法的原生kotlin应用,在性能上与原生kotlin一致。
uni-app x不支持vue2
uts替代的是js,而uvue替代的就是html和css。或者如果你了解flutter的话,也可以理解为uts类似dart,而uvue类似flutter。
和Flutter对比
在过去的跨平台方案中,逻辑层和ui层的通信始终是痛点。
所以在webview渲染时,增加了renderjs、wxs等技术
所以在nvue渲染时,增加了bindingX技术
所以在skyline渲染时,增加了worklet技术
但这些补丁技术都不治根。过去只有flutter解决了dart和ui层的通信问题。可是这套方案又带来2个问题:
dart和原生层通信也还是有延时,对象传递需要序列化,造成性能问题;
自渲染而不是原生渲染,无可避免会引发混合渲染,比如原生的信息流广告内嵌、原生输入法适配,造成内存高和输入障碍。
其实不管是js还是dart,和原生都有通信桥,功能上没有限制,可以调用各种原生能力,但问题就出在Android上这个通信性能上不去。
既然通信性能不行,那就干脆不通信。
由于uts在Android上被编译为kotlin,它的逻辑层和UI层都是纯原生的,没有通信问题,所以它的性能真正达到了原生水平。因为本质上它就是换了vue写法的原生kotlin应用。
在iOS上,情况要复杂些
uts语言
uts替代的是js,而uvue替代的就是html和css。或者如果你了解flutter的话,也可以理解为uts类似dart,而uvue类似flutter。
uvue是一套基于uts的、兼容vue语法的、跨平台的、原生渲染引擎。
Android版于3.99上线
Web版于4.0上线
iOS版于4.11上线
uts和ts很相似,但为了跨端,uts进行了一些约束和特定平台的增补。详见 uts语言介绍
例子如下:
// 声明一个string类型的变量
let str :string = "hello";
let str1 = 'world';
str = "hello world";
str = str1 as string; // 在不确定类型的时候可以给他一个类型
// 声明一个传参是数字类型的,返回是boolean类型的函数
const test = (score: number): boolean => {
return (score>=60)
}
// 也可以自定义数据类型进行类型规范,比如声明一个Page类型
type Page = {
name : string
enable ?: boolean
url ?: string.PageURIString
}
// 总的来说,会TypeScript的,这个是没问题的,两个很相像
uvue渲染引擎
uvue支持的是vue3语法,支持组合式API和选项式API。详见vue语法
uvue在App端支持的css语法,是web的子集,类似于但优于nvue的css。仅支持flex布局,但也足以布局出需要的界面。详见css语法
使用该css子集,可保证跨端。如果把uvue页面编译到web平台,则web的其他css也都可以使用。