微信小程序开发总结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 })