[实践] Uni-App 在团队的使用总结

最近使用 Uni-App 的感受。
从团队成员和成本来考虑,团队从 React 转向了 Vue 技术栈。

使用体验

没用之前以为真和 Vue 一样,用了之后才知道。这喵的是 Vue 和 小程序的结合体吖。写类似小程序的标签,Vue 的语法。对比 Uni-App 文档和微信小程序的文档,不差多少,只是将 wx => uni,熟悉 Vue 和 小程序可以直接上手。

需要注意看注意事项,给出了和 Vue 使用的区别。例如动态的 Class 与 Style 绑定,在 H5 能用,APP 和小程序就挂了。

路由

Uni-App 的路由全部配置在 pages.json 文件里,就会导致多人开发的时候,路由无法拆分,如果处理的不好,经常发生冲突。

里面其他的配置项,见官方文档就可以处理了。

导航

导航栏需要注意的一个问题就是不同端的展示形式会不同,所以要处理兼容问题,导航栏可以自定义,用原生,框架,插件但是兼容性都不同,多端需求一定要在不同设备跑一下看效果。

例如在小程序和 APP 中,原生导航栏取消不了,就不能用自定义的导航栏,要在 pages.json 中配置原生导航栏。

兼容方法就是用 Uni-App 提供的条件编译,处理各端不同的差异。支付的业务也是通过条件编译,区分不同端调用不同的支付方式。

生命周期

应用的生命周期页面的生命周期组件的生命周期。大致上和 Vue 的差不多,页面生命周期针对当前的页面,应用生命周期针对小程序、APP。这些坑的过程都要踩一下!

网络请求

官方的 uni.request 虽然封装好了基本的请求,但是没有拦截,我们开始也是自己在这基础上加了层壳,简单的封装发送请求。后面是选择了第三方库的使用,如 flyio、axios。

资源优化

  • 不涉及 Webpack 之类的资源打包优化,但是文档中有提到资源预取、预加载、treeShaking 只需要在配置文件中设置即可,或者在开发工具勾上。小程序也是勾选自动压缩混淆。
  • 删除没用到文件和图片资源,因为打包的时候是会算进去的,比如 static 目录下的资源文件都会被打包,而且图片资源太大也不好。
  • Uni-App 运行时的框架主库 chunk-vendors.js 文件是经过处理的,部署做 gZip

Web-View

在 Uni-App 中使用 WebView,可以使用本地的资源和网络的资源,不同平台也是有差异的,小程序不支持本地 HTML,且小程序端 WebView 组件一定有原生导航栏。

需要注意的是网页向应用 postMessage 的时候需要引入 uni.web-view.js,不然是没办法通信拿不到数据。

全局状态

小程序中要在每一个页面中添加使用共有的数据,可以有三种方式解决。

Vue.prototype

它的作用是可以挂载到 Vue 的所有实例上,供所有的页面使用。

// main.js
Vue.prototype.$globalVar = "Hello";

然后在 pages/index/index 中使用: