跳转至

uni-app

作为小小逗项目前两代的框架,数字天堂公司的 uni-app 给我留下了深刻的印象。

它说了什么

用 Vue 语法,编译到全端,是不是很酷?引用官网的一句话:

不管领导安排什么样的项目,你都可以快速交付,不需要转换开发思维、不需要更改开发习惯。

官网说得天花乱坠,好像用上 uni-app 技术,任何一个个人开发者都可以全平台通吃,飞黄腾达。

如何做到

TL;DR: JS Bridge

在每个平台上设置一个中间层,可以看做运行时,使用近乎相同的上层 js 代码实现多端兼容。APP 端用他们之前做过的 HTML5+ 实现,微信小程序端用微信 API 实现……等等。

它没说什么

Vue 2 和 Vue 3,不兼容。各种莫名奇妙的平台不兼容就不说了。Write once, Debug Everywhere。

HTML5+,本质上就是一套 JS Bridge,但是文档写得太随意了,还没有示例程序,说得好听是产业联盟,其实就是自己的 API 文档托管网页。

uniCloud,本质也只是在阿里云函数计算上实现了一套微信小程序云开发的 API,对于要独立运营、做大做强的企业,自己建服务器、写 API,主动权在自己手里不好吗,而且阿里云函数计算还有免费额度,uniCloud 已经没有了。而且,如果 uniCloud 足够好,为啥要和 uni-app 生态绑定在一起,而不是独立出来,支持其它平台呢?学也只是学个皮毛,人家微信的 db.watch 如此优雅,但 uniCloud 没学来,还说“提供了更为强大的 socket”,实际体验真的差了不止一点。

uniPush,推送服务,免费推送,很牛吧,1s 左右的延迟,因为背靠个推,个推客服服务态度相当好,我挺能接受。3.6.2 更新之后在 APP 端直接没法获取到用户标识符了,周五当天更新,周六晚上才发 3.6.3,更了之后还是获取不到,发布版本之前没测试吗?只在 Hbuilder X 发布了编译器更新,npm 渠道总会晚几天到一周,让人怀疑是否会放弃 npm 支持。这件小事让我对官方产生了极大的怀疑。据说现在 uniPush 获取 ClientID 变成异步了,但真的不想适配了,心累。

单元测试,基本没法做,看一下隔壁 Flutterflutter_bloc,人家的模块化,人家的样例。

虽然近期 uni-app 生态出现了 tmui前端铺子等一些不错的组件库,我也相信它会变得更好,但我不想等它变好之后,我再开始自己的项目。