现在的区块链项目往uniapp上移植, 用大家能听懂的话说, 就是把链上的那些业务逻辑包裹在一个能够跨终端运行的框架里面。我做这两年的工作下来发现, 能够让系统正常跑起来跟能够运行得很好, 这是完全是两个不同的概念,千万不要幻想仅仅使用一套代码就能够把所有的事情都全部覆盖住。

好多人一开始就会着急忙慌地打算把什么东西都用劲都塞进去, 比如钱包软件, 还有去中心化应用程序, 再配上跨链桥之类的东西全都往这个地方扔。我的那个叫老周的朋友他就是像这种做法的, 结果直接导致了签名验证的过程被堵死停滞了, 在苹果手机这个操作系统上出现的弹窗显示的内容完全全都是扭曲错乱的状况。

后来他不得不按照规矩老老实实地把这些和区块链技术相关的交互过程抽取出来形成一个独立的、属于系统原生的功能模块, 然后使用uniapp来仅仅负责管理用户界面的部分, 这样操作起来才终于变得通畅顺利了起来。

区块链项目套uniapp跨端,我踩坑两年才想明白的事

还有一个地方容易出问题, 就是千万不要把交易数据当成普通的JSON格式填充到data里面来回传递, 因为像nonce、gas这些东西在页面刷新或者切换再返回之后, 状态会完全乱套, 所以我后来采用了轻量事件总线的方案, 通过回调的方式利用本地socket推送消息, 而不是使用响应式的数据绑定机制, 这样能够减少很多不必要的心智负担。

你得先分辨清楚, 究竟是哪一层应该用原生来写, 而哪一层又能够让 UniApp 来兜底。你要明白, 框架本质上只是一个工具, 技术链路就是技术链路, 不应该把这两者硬生生地捆绑在一起去处理。