遇到的兼容性问题,后续补充中

229 阅读3分钟

遇到的兼容性问题,主要是uniapp,后续补充中

1.时间戳转化

安卓机型识别时间 可以是2022-2-22 11:23:22 ,也可以是2022/11/22 11:22:33
ios识别时间只能是2022/11/22 11:22:3,3否则会解析时间时得到NAN,得不到时间戳,得到null
    let arriveTime=2022-2-22 11:23:22
    arriveTime = arriveTime.replace(/-/g, '/')

2.微信小程序调用api设置底部tabbar,如果图片路径不存在,预览时将会卡死小程序

3.wx.setNavigationBarTitle

当有两个tabbar页面,A和B,每个页面都请求五六个接口,并将网速降低时,
如果设置页面标题是根据接口返回值来进行动态设置的,如果这时候快速切换tabbar栏,
而接口在离开当前页面时还在请求还没有返回数据,将会导致在A页面根据接口动态设置页面的标题的api作用在B页面上

4.uniapp开发APP时,样式错乱,但是其他端不会出现问题

原因:如果template的标签中使用的是某个对象里面的对象的数组,如a.b.c,数据从后端接口获取,但是前端只是定义了一个a对象,就会出错,需要改为定义如下结构

 export default {
    data() {
      return {
          a:{
              b:{
                  c:[]
              }
          }
      }
    },
  }

5.uniapp 打包优化问题

如果某个分包导入了一个sdk,但是会导致编译到小程序的vendor.js体积过大 解决方法

步骤1:
//需要在manifest.json中找到小程序端的源码试图,添加,optimization中的分包名字必须是subPackages,否则无效
 //"optimization" : {
 //           "subPackages" : true
 // },
步骤2:
    主包中有一个页面a,分包中subPackages有个页面b,b中引入了体积很大的sdk,如果直接从a跳转b,
    则sdk会被打包 进入vendor.js,上述操作失效,体积过大
    
    但是如果搞一个中间页面作为中间跳转页面就可以解决,在另一个分包pubPackages中定义一个页面c,a先跳转c
    ,再跳转b,体积过大问题就可以解决,核心就是sdk不要被主包直接引用
    
    
    "mp-weixin" : {
        "appid" : "wx518ed62534515f4a",
        "setting" : {
            "urlCheck" : true,
            "minified" : true,
            "es6" : true,
            "postcss" : true
        },
        "usingComponents" : true,
        "permission" : {
            "scope.userLocation" : {
                "desc" : "你的位置信息将用于小程序位置接口的效果展示"
            }
        },
        "optimization" : {
            "subPackages" : true
        },
        "requiredPrivateInfos" : [ "getLocation", "chooseAddress", "chooseLocation" ]
    },

uniapp 绑定click事件bug

//如下showTime事件是可以触发的
<text @click="showTime">
    <text>1</text>
    <text>2</text>
</text>

//如下showTime事件不可以触发的,修改方法,将最外层的text标签改为view标签
<text >
    <text>1</text>
    <text @click="showTime">2</text>
</text>

uniapp组件切换导致样式全部出错,并且无请求

//错误提示
# cid unmatched [object Object] at view.umd.min.js:1 TypeError: Invalid attempt to destructure non-ite
//解决方法
1.判断循环的数组是否为数组
2.组件切换隐藏时不要使用v-show,使用v-if

uniapp自定义表单使用uview组件的单选组件和复选框导致数据setdata过大,小程序卡死

解决方法,不要使用v-model,使用uniapp自带的组件,setData是根据回调来决定是否继续setData,不要一次性更新数据

配置flutter

//修改flutter下载源
PS D:\flutter\flutter_application_2> $env:PUB_HOSTED_URL="https://pub.flutter-io.cn"
PS D:\flutter\flutter_application_2> $env:FLUTTER_STORAGE_BASE_URL="https://storage.flutter-io.cn"

//修改flutter的Android Studio配置
flutter config --android-studio-dir="D:\software\Android Studio"
flutter config --android-sdk="D:\software\android-studio\androidsdk"