最近工作原因,接触了一点 uni-app,老实说,体验很不好,当然这不一定是 uni-app 的问题,跨平台这个需求本身就有点扯淡。
松哥接触跨平台的时间还是蛮早的,而且因为毕业后有一段时间在做移动端开发,而跨平台这种事本身就是移动端最火热,所以今天就来随便聊聊我曾经接触过的几种跨平台方案。
2012 年还在学校的时候,当时接触到的第一种跨平台方案就是 jQuery Mobile,那个年代 jQuery 是前端领域妥妥的当红小生,火热程度不亚于今天的 Vue。jQuery 官方顺势推出了 jQuery Mobile,用来支持移动端的开发。这种方案说白了就是开发基于浏览器的应用,然后在手机的浏览器上面跑。塞班、Windows Phone、Android、iOS 等都支持。但是实际上开发出来的 App,在塞班和 Windows Phone 上面的显示效果惨不忍睹。在低端 Android 手机上运行特别卡,点一下反应半天,就像浏览器网页一样慢,在三四千块的 Android 手机上或者 iPhone、iPad 上运行效果就很棒了,甚至有种原生 App 的错觉。
但是这种方案显然不是一个很好的跨平台方案,无法解决低端机上的运行效率问题,所以我一直好奇这种方案有没有商用价值?我刚刚打开 jQuery 的官网瞅了一眼,jQuery Mobile 还在,不知道小伙伴们在公司项目中有没有用过这种方案,欢迎留言说说。
jQuery Mobile 是我接触的第一种跨平台方案,当时就是不懂 Android 开发,也不懂 iOS 开发,但是又想搞移动端应用,没办法就只能用 jQuery Mobile 搞了。虽然这种方案一点都不完美,但是却让我明白了跨平台的意义,多个平台同时存在时,就会一直有跨平台的需求,我们总想一套代码,运行多个平台。就像我们 Java,Write once, run anywhere
。
当然用 jQuery Mobile 时候,还有一些配套工具如 PhoneGap、Cordova 等,这些就不一一说了。
大学刚毕业的时候,我在做 Android 开发,那一段时间接触了 RN(React Native),自己也上手学了一段时间,对 RN 整体的感觉就是运行效率比 jQuery Mobile 强多了,不过对于一个非专业前端来说,RN 上手也比 jQuery Mobile 难一些。不过 RN 我没搞太久,后来就去做 Java 了,从此很少关注移动端的东西。
不过作为一个称职的程序员,折腾是人生第一要义。搞 Java 后端开发没多久后,又玩起了小程序,现在除了微信有小程序,百度、支付宝、字节、QQ、360 等都有自己的小程序,于是大家又开始琢磨跨平台了,目前看起来比较火的似乎就是 uni-app 了。
我第一次了解到这个东西应该是在 2018 年的时候,当时我想趁着工作不忙学点东西,在晚上闲逛的时候看到了这个项目,当时感觉还是一个很小的项目,GitHub 上的 star 才 100 多,现在都 3W+ 了。不过因为之前搞移动端跨平台留下的阴影,我对这种跨平台方案都提不起兴趣,感觉都是牛皮吹的大,实际效果很有限。所以很长一段时间没,对 uni-app 的认知也只是停留在了解。
最近因为工作原因,没办法,接触了 uni-app,果然跟我想的差不多。真的很难做到 Write once, run anywhere
,一些兼容性问题还是要特殊处理。而且这个框架还和 HBuilder 这个开发工具深度绑定,用这个工具开发就很方便,项目创建也要快很多。但是如果用 cli 命令行,那体验感就迅速下跌。而且按照官方给的模版创建出来的项目,刚打开后控制台就报错也让我很郁闷,这对新手来说是相当不友好的。
在这些问题里边我觉得最主要的还是兼容问题很难处理,无法真正做到 Write once, run anywhere
,无法做到这一点,这个框架的意义就大打折扣了。
即使做纯粹的原生开发,都不可避免的遇到兼容问题,更不用说这种跨平台开发,兼容性问题只会多不会少。我也专门去问了身边的前端同事,他说其实还是有公司在用 uni-app,但是不多。
小伙伴们有没有用过一些跨平台的框架或者工具,欢迎留言说说你的使用感受~