1. 注意像素尺寸 ,uni-app官方推荐用upx,小程序是rpx,weex是px,不要弄混了。https://uniapp.dcloud.io/frame?id=%E5%B0%BA%E5%AF%B8%E5%8D%95%E4%BD%8D

  2. 注意HBudiler 保存代码机制,默认代码不会保存,记得随手写完command/ctrl + s,编译时检查代码是否都保存了

  3. image 标签一定要设置高度和宽度,100% 或者 绝对定位都是无效的。地图也一样。 image标签里边不要套text等标签了,不生效;

  4. uni-app同小程序一样 display 默认不是flex,所以在使用到flex的特性是 需要加上display:flex。

  5. 有些情况下需要获取全屏高度,但是不能使用flex:1 或者 abosulte的方式。这个时候可以采用 获取 系统屏幕宽度 / 750 * 系统屏幕高度。代码如下

    1
    2
    3
    4
    5
    const systemInfo = uni.getSystemInfoSync();
    if (systemInfo.windowWidth && systemInfo.windowHeight) {
    let multiple = 750/systemInfo.windowWidth;
    that.screenHeight = systemInfo.windowHeight * multiple;
    }
  6. uniapp 给Data赋值时和微信小程序的区别。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    data() {
    return {
    value: 0
    }
    }
    //小程序采用
    this.setData({
    value: 1
    })
    //uni-app
    this.value = 1;
  7. uni-app map的 controls 中 position 使用的是px,而外部css使用的upx,这里要注意不要写成upx的值了。 并且position 只支持了 top 和 left定位。 如果要bottom 的话 需要先计算屏幕高度,然后再更改一次正确的位置。默认可以给 iPhone 7标准尺寸的 绝对定位。

  8. cover-view 或者 cover-image 支持position 但同样 只支持top 和 left 。需要写 bottom 同 7。

  9. iconfont 的使用方式与小程序不同 ,跟weex方式差不多,需要注意copy下来的地址加协议头。https://uniapp.dcloud.io/frame?id=%E5%AD%97%E4%BD%93%E5%9B%BE%E6%A0%87, text支持 ,cover-view 在模拟器显示 真机不显示

  10. 标签中的@regionchange 不触发

    官方说明:事件映射表中没有的原生事件也可以使用,例如map组件的regionchange 事件直接在组件上写成 @regionchange,同时这个事件也非常特殊,它的 event type 有 begin 和 end 两个,导致我们无法在handleProxy 中区分到底是什么事件,所以你在监听此类事件的时候同时监听事件名和事件类型既 <map @regionchange=”functionName” @end=”functionName” @begin=”functionName”>

  11. uni-app 官方文档中 map并没有支持多边形,但仍然可以按照微信小程序的方式实现。

  12. 支付宝小程序 如果不是在首页 ,左上角会始终出现返回按钮或者回到主页按钮,不建议在小程序中添加启动页面, 原有启动逻辑可以放在App生命周期中。

  13. 支付宝小程序想设置navigationBar自定义,文档中并未说明,但在示例Demo中发现 通过页面json文件,”transparentTitle”: “auto”可以实现navigationBar的自定义 ,但是要注意支付宝左上角会有按钮。

  14. 注意:以:style=””这样的方式设置px像素值,其值为实际像素,不会被编译器转换。

  15. 非H5端不支持 Vue官方文档:Class 与 Style 绑定 中的 classObject 和 styleObject 语法。

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    //不支持示例
    <template>
    <view :class="[activeClass]" :style="[baseStyles,overridingStyles]"></view>
    </template>

    <script>
    export default {
    data() {
    return {
    activeClass: {
    'active': true,
    'text-danger': false
    },
    baseStyles: {
    color: 'green',
    fontSize: '30px'
    },
    overridingStyles: {
    'font-weight': 'bold'
    }
    }
    }
    }
    </script>

###

  1. iconfont 不显示
  • 看看css文件中是否导入 font-face
  • text 的class中是否有font-family
  • iconfont文件中是否这个图标
  • css是否存在同名的 iconfont class.
  1. css 标签选择器设置的属性可能权重过大,导致后面的类选择器无法覆盖它所设置的属性
  2. uni-app button标签 自带了border属性 ,如果要去掉 参考http://ask.dcloud.net.cn/question/62262
  3. v-for 中 @click 带参数,必须设置key ,不然click的参数会为空
  4. map 中绘制线,一定要注意polyline 类型是Array, 虽然它里面是一个Object,但是最外层一定要变成Array,不然会无法显示
  5. data中声明 mpType的变量,会导致所有的Data设置失效。官方文档并没有将其保留为关键字,但是他的存在确实是所有的Data赋值失效了。主要是与App.mpType冲突,注意下这个坑。
  6. mac和windows 下 uni-requset 的Promise支持可能不一致代码如下
    1
    2
    3
    4
    5
    uni.request().then(data => {

    }).catch(error => {

    })

这段代码在Windows下编译并能正常执行到iOS ,Andorid的微信小程序端。在Mac 下编译会报 ui-request…then not functoin 。已提交issuse https://github.com/dcloudio/uni-app/issues/351

  1. uni-bluetooth , 注意外围设备的services 和characteristic 在iOS 都是大写,在android 都是小写。 注意 createConnection 后还需要discoverServices 和 discovcerCharacteristics 。
  2. map marker . label = {} 时Android 会出现小蓝点,iOS不会。设置marker的label 为null可以解决。
  3. 微信小程序下,怀疑relaunch页面跳转没有清除, 具体表现为在B页面设置蓝牙状态监听,relaunch 到 C页面,B页面依然能打印蓝牙状态监听的loghttps://developers.weixin.qq.com/community/develop/doc/0000e8551d0f309fadc8b123751000?fromCreate=1
  4. 小程序的triggerEvent在uniapp中不支持;
  5. uni-app 中在data使用 Object.assgin 一定要加在Data中的最后一行,不然小程序会在iOS 9.3的机器上出现白屏问题。目前不清楚是小程序的问题还是uni-app的问题。