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
变成异步了,但真的不想适配了,心累。
单元测试,基本没法做,看一下隔壁 Flutter
的 flutter_bloc
,人家的模块化,人家的样例。
虽然近期 uni-app
生态出现了 tmui
、前端铺子等一些不错的组件库,我也相信它会变得更好,但我不想等它变好之后,我再开始自己的项目。