1. 不能在同一元素上绑定相同的属性,而这个在vue是可以的
    例如:
<view class="default" class="{{loaded ? 'load-class' : 'unload-class'}}"></view>

在最终的渲染结果里,只会有load-class或者unload-class,前面的default会被覆盖掉
正确写法如下

<view class="default {{loaded ? 'load-class' : 'unload-class'}}"></view>
  1. 没有过滤器的问题 这使得我们需要对数据进行预处理
    例如: 价格salePrice展示时要求:小数点前的数字显示大一点,小数点后的数字显示小一点,如果小数点后为0则不显示小数点后面的部分
    这在vue里一个过滤器就可以
    而在小程序里,由于没有过滤器,如果把字段处理写到行内,会导致代码难以阅读且代码复用性低。因此,我们需要先对数据进行预处理,把数据处理好,再进行展示
import { formatPrice } from 'utils'
let goodsList = formatPrice(this.data.goodsList, 'salePrice')
this.setData({
  'goodsList': goodsList
})
  1. rpx并非全能(大多数情况可用) 整个屏幕的宽度是750rpx
    在h5页面转小程序过程中,有一个场景是单行可滑动的商品列表,一行展示2.5或3.5个商品,这里的元素宽度是通过
this.setData({
  // windowWidth是可使用窗口宽度,column是每行展示的商品数
  'goodsItemWidth': this.data.windowWidth / this.data.column
})

计算得到的
起初我们把${goodsItemWidth}px全部转化为${goodsItemWidth*2}rpx,发现在高分辨率手机(例如iphone7p)上宽度不正确,我多次调整这个数值也不能适配所有机型,直接使用${goodsItemWidth}px立即正常了

  1. 所有影响页面展示的数据初始化或赋值都必须使用setData()