记得2019年刚入坑小程序,我第一反应是“这破烂语法怎么跟Vue差那么多”。当时公司要求同时上微信和支付宝,我毫不犹豫选了Taro。那时候觉得一套代码跑两端简直天才设计,写React也顺手。后来我才发现自己太天真。Taro的编译链路动不动就翻车,样式兼容全靠补丁,一次改状态管理库,整个打包都崩了。调试的时候看那堆转换后的代码,像是看一个喝醉的机器人跳舞。说真的,我花了大量时间去解决框架本身的问题,而不是业务问题。
后来我自己接了外包,也试过uniapp和原生小程序。原生开发确实啰嗦,每个页面要写js/wxml/wxss/json,但好处是可控。跨端框架吹的“一套代码”,实际上需要处理各种条件编译和平台差异。比如Taro里一个简单的按钮点击,在微信端没问题,支付宝端事件对象结构不同,你还得封装。更别说路由、缓存、支付这些接口了,根本做不到统一。我见过很多人用跨端框架做出来的小程序,包体积比原生大一倍,首屏加载慢得让人抓狂,性能上就输在起跑线。而且跨端框架的运行时往往有兼容层,内存占用也高。
我的观点可能有点反主流:对于大部分小程序项目,跨端框架是伪需求。你想想,真正需要多端上架的场景有多少?大多数公司主要也就一个微信小程序,顶多再加个抖音。如果你真的需要多端,不如用原生做一套,然后把业务逻辑抽成纯函数复用。这样做的好处是每一端都能充分利用平台特性,比如微信的私域流量能力、抖音的推荐算法,这些跨端框架是支持不了的。我身边的团队,凡是认真做小程序原生优化的人,体验和转化率都明显更好。反过来,那些追框架热点的,光升级就忙不过来,你看Taro3和Taro2的差异就知道坑有多深。
现在我开发小程序,老老实实用原生。不是说我不会跨端,而是我明白了一个道理:工具链的复杂度会反噬你的效率。有时候“笨办法”才是最快的。如果你正犹豫要不要学跨端框架,我的建议是:先扎实学原生,搞清楚每个API到底是什么逻辑。等你有能力识别框架的坑了,再去权衡要不要用。多端统一是个美好的愿景,但现实是每个平台都在快速迭代,你追不上的。放下执念,专注业务,或许能让你的小程序活得更好。