微信小程序開發總結html
微信公衆號的帳戶和微信小程序的帳戶是分離的,並非同一個,須要使用一個新的郵箱來註冊小程序。vue
正式環境必須使用https協議,測試環境配置工具中能夠設置爲不校驗http協議。git
wepygithub
騰訊官方開發的類vue框架,可是實際使用和vue仍是有不小的區別的,總的來講比直接用原生開發體驗上要好不少,若是是新項目建議用wepy開發,不能使用div、ul等html標籤,而必須使用小程序的view、text等基礎組件。json
mpvue小程序
美團基於vue開發的框架,最大的優勢就是符合vue的使用習慣,熟悉vue開發的同窗,能夠很快適應,比較適用於從原有vue項目遷移過來。微信小程序
#### 相同點:api
Props、 Mixin、 computed、 slot、組件化開發微信
#### 不一樣點:微信開發
methods裏只能寫template裏綁定的事件、髒數據檢查須要手動調用方法觸發
微信小程序的第三方UI框架,目前各方面相對比較好用的是 iview weapp,不過仍是存在比較多的坑,建議iview只是做爲參考,另外本身實現組件體驗和穩定性上來講會更好。
微信小程序的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, }
OpenId 是一個用戶對於一個小程序/公衆號的標識,開發者能夠經過這個標識識別出用戶。
UnionId 是一個用戶對於同主體微信小程序/公衆號/APP的標識,開發者須要在微信開放平臺下綁定相同帳號的主體。開發者可經過UnionId,實現多個小程序、公衆號、甚至APP 之間的數據互通了。
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) }) } }) } } })
這裏的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>
有時候咱們在vue中習慣寫{{ item.label.substr(0,2) }}
來處理字符串,可是在wepy中這種寫法有時候會不起效,爲了使程序更穩定,咱們能夠在onLoad中直接處理好。
wx.navigateTo 會保留當前頁面而後跳轉,當用戶按返回按鈕後不會觸發onLoad等事件,致使沒法更數據。
wx.reLaunch 會關閉全部頁面再跳轉。
使用時須要根據實際業務選擇合適的api。
當發現輸入框不能輸入或者工具的按鈕點不動時,關掉微信開發者工具,而後從新打開便可。
提交體驗版,內部測試審覈經過後 -> 提交審覈(1~3天,本次項目審覈時間2個小時)-> 提交發布
注意,提交審覈後,還須要手動去提交發布,不然是不算上線的。提交發布成功後,大概須要5分鐘左右的時間,就能夠在微信裏搜索到小程序了。
默認右上角是沒有轉發按鈕的,須要本身手動在須要轉發分享的頁面onLoad裏添加如下代碼。
wx.showShareMenu({ withShareTicket: false })