谈起uni-app,我们前端开发者们可能都不会感到陌生,没用过的至少听过。但是后面加个x的话,大家可能有点纳闷:“这是什么玩意?是键盘坏了吗?跟马斯克扯上关系了吗?”
不,我的键盘好得很。这东东跟马斯克暂时也没啥关系。带着这份好奇,我今天准备带大家一起去,认真地探索一下这个uni-app的变种项目。
uni-app x 是什么?
首先,我引用uni-app x官方的介绍。
uni-app x,是下一代 uni-app,是一个跨平台应用开发引擎。
uni-app x 是一个庞大的工程,它包括uts语言、uvue渲染引擎、uni的组件和API、以及扩展机制。
uts是一门类ts的、跨平台的、新语言。uts在iOS端编译为swift、在Android端编译为kotlin、在Web端编译为js。
在Android平台,uni-app x 的工程被编译为kotlin代码,本质上是换了vue写法的原生kotlin应用,在性能上与原生kotlin一致。
可以体验打包后的hello uni-app x,如下二维码包含了Android的apk和Web版地址。(Android端通过开发者工具显示界面元素边界可知界面都是原生UI,解包后也不会看到js引擎,里面的html文件是示例中演示web-view组件所用)
然后,我个人解读一下:uni-app x是uni-app团队,去年新造出来的轮子。主要面向与iOS和Android,的原生开发。uni-app x引擎会帮我们把uts代码(这里又出现了个ts的变种,等后面再详细明说)翻译成swift或kotlin代码,来实现原生开发。(当然,uni-app x也可以用来开发H5应用,但个人觉得这纯粹没事找事,不提也罢)
为什么选uni-app x?
有了uni-app x,我们就可以用我们熟悉vue+ts开发原生的App,想想都觉得就美滋滋,对吧?
有人说uni-app本身就可以开发iOS和Android应用,虽然不是原生,而是在webview层实现的hybird应用。那么uni-app x存在有什么意义呢?
原生应用意味着什么?当然是APP的性能、体验和适配性上的加分。当然如,果您的App对以上加分项没有过多的追求,还想用来发布小程序,那么,前端技术选型直接用uni-app,也是非常理智非常正确的选择。
我准备用它做什么?
刚才安利了一番uni-app x,有人开始怀疑我是在做广告了。没有,我确实也正在做技术选型,回归到我自身,为什么舍弃uni-app或者其他技术方案,而要用uni-app x来开发项目呢?
我们公司有一套自研的WMS系统,配套了个for Anroid系统的PDA应用。
- 这个应用最初是Java写的原生的Android应用。
- 因为Java技术栈一直不是我们公司的主流,维护起来有点吃力。为了去Java化,在2020年前做了一次重构,换成了基于C#技术栈的Xmarin框架。
- Xmarin虽然有微软大厂的背书,但是改变不了它一直都是小众的事实。同事一直抱怨,这玩意资料太少坑太多。所以,我们一直商量着要把它换掉,换成大家熟悉的uni-app。
- 4年过去了,Xmarin也终于被微软爸爸放弃了(详见:Xamarin 支持策略)。这样我们作为开发者自然也没有了坚持的理由。重构应用再次被提上日程。
至于我为什么最后选了uni-app x,主要是机缘巧合正好点了进去发现这个还不错。再加上之前,一直是原生开发,App应用性能和体验都很好,这样心理惯性使我倾向于x。
没关系,先做个demo试一试吧。探索新事物本身就是一种乐趣,在无趣的工作中找到有个趣的起点,难能可贵啊!