赞
踩
最近使用 uni-app 的感受。
uni-app 需要注意看注意事项,文档给出了和 Vue 使用的区别。例如动态的 Class 与 Style 绑定,在 H5 能用,APP 和小程序的体现就不一样。
配置项跟着文档来,开发环境也是现成的,下载 HBuilderX 导入项目就能运行,日常开发习惯了 VSCode,所以 HBuilderX 的主要作用就是用来打包 APK 和起各个端的服务,coding 的话当然还是用 VSCode。
uni-app 的路由全部配置在 pages.json
文件里,就会导致多人开发的时候,路由无法拆分,如果处理的不好,就会发生冲突。
导航栏需要注意的一个问题就是不同端的展示形式会不同,所以要处理兼容问题,导航栏可以自定义,用原生,框架,插件但是兼容性都不同,多端需求一定要在不同设备跑一下看效果。
例如在小程序和 APP 中,原生导航栏取消不了,就不能用自定义的导航栏,要在 pages.json
中配置原生导航栏。
兼容方法就是用 uni-app 提供的条件编译,处理各端不同的差异,我们支付的业务逻辑也是通过条件编译,区分不同端调用不同的支付方式。
分为 应用的生命周期
、页面的生命周期
、组件的生命周期
。写过小程序和 Vue 的很好理解,大致上和 Vue 的还是差不多的,页面生命周期针对当前的页面,应用生命周期针对小程序、APP。这些过程可能都要踩一下!
官方的 uni.request
虽然封装好了基本的请求,但是没有拦截,我们开始也是自己在这基础上加了层壳,简单的封装发送请求。当然也可以选择第三方库的使用,如 flyio、axios。
我们是前端自己封装了 HTTP 请求,并且统一接口的请求方式,所有的接口放到 api.js 文件中进行统一管理。这样大家在页面请求接口的时候风格才统一,包括约定好请求拦截和响应拦截,具体拦截的参数和后台约定好。
static
目录下的资源文件都会被打包,而且图片资源太大也不好。chunk-vendors.js
文件是经过处理的,部署做 gzip
。在 uni-app 中使用 Web-View,可以使用本地的资源和网络的资源,不同平台也是有差异的,小程序不支持本地 HTML,且小程序端 Web-View 组件一定有原生导航栏。
需要注意的是网页向应用 postMessage
的时候需要引入 uni.web-view.js
,不然是没办法通信拿不到数据。
最开始是直接使用类似小程序的 globalData 来管理我们的全局状态,但是后面发现需求一多,加了各种东西之后,需要取这个状态的时候就很痛苦,做为程序猿嘛,都想偷懒吖,每次都得引入一下 getApp().globalData.data
这样很繁琐可不行,就替换成了 Vuex,需要取这个变量的时候,直接 this.vuex_xxxx
就能拿到这个值。
有段时间重写了 HTTP 请求部分和全局状态管理部分。
小程序中要在每一个页面中添加使用共有的数据,可以有三种方式解决。
它的作用是可以挂载到 Vue 的所有实例上,供所有的页面使用。
- // main.js
- Vue.prototype.$globalVar = "Hello";
然后在 pages/index/index
中使用:
- <template>
- <view>{{ useGlobalVar }}</view>
- </tempalte>
- <script>
- export default {
- data (){
- return {
- useGlobalVar: $globalVar
- }
- }
- }
- </script>
- <!-- App.vue -->
- <script>
- export default {
- globalData:{
- data:1
- }
- onShow() {
-
- getApp().globalData.data; // 使用
-
- getApp().globalData.data = 1; // 更新
-
- };
- </script>
uni-app 的主要特色也源自于它的插件市场十分丰富。
用得比较好的组件:
uView:我们用了这个库的骨架屏。这个库还是有很多技巧可以学到的。
https://www.uviewui.com/js/intro.html
ColorUI-UniApp:是个样式库,不是组件库。
https://ext.dcloud.net.cn/plugin?id=239
答题模版:左右滑答题模版,单选题、多选项,判断题,填空题,问答题。基于 ColorUI 做的。
https://ext.dcloud.net.cn/plugin?id=451
uCharts 高性能跨全端图表:
https://ext.dcloud.net.cn/plugin?id=271
最后:各端的差异性,很多东西,H5 挺好的,上真机就挂了,真机好着的,换小程序就飘了,不同小程序之间也有差异,重点是仔细阅读文档。
云打包限制,云打包(打 APK) 的每天做了限制,超出次数需要购买。
虽然可能一些原生可以实现的功能 uni-app 实现不了,不过整体开发下来还行,很多的坑还是因为多端不兼容,除了写起来麻烦一点,基本上都还是有可以解决的策略。比之前用 Weex 写 APP 开发体验好一点,比 React Native 的编译鸡肋一点(这点体验不是很好),至于 Flutter 还没有试过,有机会的话会试一下。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。