微信小程序开发总结

微信小程序开发总结html

  1. 微信公众号的帐户和微信小程序的帐户是分离的,并非同一个,须要使用一个新的邮箱来注册小程序。vue

  2. 正式环境必须使用https协议,测试环境配置工具中能够设置为不校验http协议。git

  1. 第三方框架 wepympvue 的区别:

wepygithub

腾讯官方开发的类vue框架,可是实际使用和vue仍是有不小的区别的,总的来讲比直接用原生开发体验上要好不少,若是是新项目建议用wepy开发,不能使用div、ul等html标签,而必须使用小程序的view、text等基础组件。json

mpvue小程序

美团基于vue开发的框架,最大的优势就是符合vue的使用习惯,熟悉vue开发的同窗,能够很快适应,比较适用于从原有vue项目迁移过来。微信小程序

  1. wepyvue 的异同

#### 相同点:api

Props、 Mixin、 computed、 slot、组件化开发微信

#### 不一样点:微信开发

methods里只能写template里绑定的事件、脏数据检查须要手动调用方法触发

  1. 微信小程序的第三方UI框架,目前各方面相对比较好用的是 iview weapp,不过仍是存在比较多的坑,建议iview只是做为参考,另外本身实现组件体验和稳定性上来讲会更好。

  2. 微信小程序的http封装

默认是get方法,post方法只接受表单传值。

// http.js
  export const API_URI = 'https://test.faceke.com/api/v2'
  import util from "./util"
  let token = ""
  function fetch(url, params, method, header, resolve, reject) {
     let _header = {
      ...header,
      'client': 'miniapp',
      'Authorization': "Bearer " + token
   }
   wx.request({
      url: `${API_URI}/${url}`,
      data: params,
      method: method,
      header: _header,
      success: res => {
      if (res.statusCode === 200 || res.statusCode === 201 || res.statusCode === 202 || res.statusCode 
      === 204) {
       resolve(res)
     } else if (res.statusCode === 401) {
       console.log("token过时从新登陆")
       wx.removeStorage({
         key: 'token',
         success(res) {
           console.log(res.data)
         }
       })
       setTimeout(() => {
         wx.reLaunch({
           url: 'index'
         })
       }, 600);
     } else {
       reject(res)
     }
   },
   fail: err => {
     console.log(err)
   }
 })
 }

  const http = function (url, params, method, header) {
 if (!token) {
   wx.getStorage({
     key: 'token',
     success(res) {
       token = res.data
       console.log(res.data)
     }
   })
 }
 return new Promise((resolve, reject) => {
   if (!token) {
     setTimeout(() => {
       fetch(url, params, method, header, resolve, reject)
     }, 300);
   } else {
     fetch(url, params, method, header, resolve, reject)
   }
 })
 }

 module.exports = {
 baseUrl: function () {
   return API_URI
 },
 get: function (url, params) {
   return http(url, params, "GET", {
     'content-type': 'application/json'
   })
 },
 delete: function (url, params) {
   return http(url, params, "DELETE", {
     'content-type': 'application/json'
   })
 },
 post: function (url, params) {
   let formData = util.json2Form(params)
   return http(url, formData, "POST", {
     'content-type': 'application/x-www-form-urlencoded'
   })
 }
 }

封装一个json格式数据转form格式数据的方法

function json2Form(json) {
 let str = [];
 for (let p in json) {
   str.push(encodeURIComponent(p) + "=" + encodeURIComponent(json[p]));
 }
 return str.join("&");
}

module.exports = {
 json2Form,
}
  1. 小程序/公众号登陆涉及到两个最关键的用户标识:

OpenId 是一个用户对于一个小程序/公众号的标识,开发者能够经过这个标识识别出用户。

UnionId 是一个用户对于同主体微信小程序/公众号/APP的标识,开发者须要在微信开放平台下绑定相同帐号的主体。开发者可经过UnionId,实现多个小程序、公众号、甚至APP 之间的数据互通了。

  1. wx.getUserInfo用户信息在wx.login以后再获取
wx.login({
   success(res) {
     if (res.code) {
       that.code = res.code
       wx.getUserInfo({
         success: function (res) {
           console.log("获取微信用户信息", res)
           let data = res
           http.post("miniLogin", {
             code: that.code,
             encryptedData: data.encryptedData,
             iv: data.iv
           }).then(({
             data
           }) => {
             console.log("登陆", data)
           })
         }
       })
     }
   }
 })
  1. 小程序模板消息推送获取formId

突破微信小程序模板消息限制,实现无限制主动推送

模板消息

这里的button必须用原生的button, 若是用iview的i-buttton会获取不到formId。

<template>
    <form @submit="getFormId" report-submit="true">
      <button form-type="submit" @submit="getFormId">开关</button>
    </from>
  </template>
  <script>
   import wepy from 'wepy'
   export default class XXX extends wepy.component {
      methods = {
        getFormId(e) {
           let formId = e.detail.formId
           // to do sth
        }
      }
   }
  </script>
  1. template中{{}}直接写js不起效

有时候咱们在vue中习惯写{{ item.label.substr(0,2) }}来处理字符串,可是在wepy中这种写法有时候会不起效,为了使程序更稳定,咱们能够在onLoad中直接处理好。

  1. wx.navigateTo 和 wx.reLaunch

wx.navigateTo 会保留当前页面而后跳转,当用户按返回按钮后不会触发onLoad等事件,致使没法更数据。

wx.reLaunch 会关闭全部页面再跳转。

使用时须要根据实际业务选择合适的api。

  1. 微信开发者工具的bug

当发现输入框不能输入或者工具的按钮点不动时,关掉微信开发者工具,而后从新打开便可。

  1. 发布审核流程

提交体验版,内部测试审核经过后 -> 提交审核(1~3天,本次项目审核时间2个小时)-> 提交发布

注意,提交审核后,还须要手动去提交发布,不然是不算上线的。提交发布成功后,大概须要5分钟左右的时间,就能够在微信里搜索到小程序了。

  1. 右上角的转发/分享按钮

默认右上角是没有转发按钮的,须要本身手动在须要转发分享的页面onLoad里添加如下代码。

wx.showShareMenu({
    withShareTicket: false
})
相关文章
相关标签/搜索