小程序

小程序与ReactVue 之间有很多共通之处,将一些概念转换过来可以快速融入微信小程序思路:

  1. 小程序也有生命周期,一般会在 onLoad 处理请求接口,因为它是最触发的生命周期钩子。

  2. 在小程序中使用 import 语法时,要使用相对路径,不能使用绝对路径(如访问根目录 / ), 否则会抛错。

  3. 在组件上,小程序的 this.triggerEvent 相当于 vuethis.$emit, 通过调用 API 来通知父组件有事件触发。

  4. 只有跟 wxml 内有绑定的变量才需要放在 this.data 中,其余的放在 this 里。这样能减轻渲染的压力。

    Page({
      /**
       * 页面的初始数据
       */
      data: {
        // 需要跟 wxml 模板绑定的数据
        gifts: {},
      },
    
      // timer 只是用于储存定时器,不需要在页面中渲染
      _timer: null,
    
      /**
       * 页面的方法列表
       */
      methods: {
        /* ... */
      },
    });
    

组件设计指南

  1. 不违反组件封装原则,提供修改默认样式的机制
  2. 使用外部样式命名可以以 .ex- 为开头作为标识,如 .ex-tag

小程序授权

  • 可以通过调用wx.getSetting,判断data.authSetting['scope.userInfo']来获取用户是否授权的信息
  • 没有授权的话,我们可以标记一个状态变量(hasLogin),当没有授权信息的时候,设置为false
  • 页面通过这个变量来控制显示真正的按钮,还是授权按钮(wx:if-else)
  • 现在微信的授权,需要引导用户主动点击按钮才会弹出授权的窗口,需要使用原生的 button 组件,通过调用 getuserinfo的回调拿到userInfo信息,判断用户是否点击了授权

小程序已知的坑

  1. 场景值并不是实时更新的,因此依赖场景值去判断可能会存在问题。