接口路径格式:公共地址部分/专属域名/前端接口文档中的最好一部分
解析富文本
1.下载github官方wxparse目录小程序项目的跟不录下
文件结构:
-wxparse/
-wxparse.js(必须存在)
-html2json.js(必须存在)
-htmlparse.js(必须存在)
-showdown.js(必须存在)
-wxDiscode.js(必须存在)
wxparse.wxml(必须存在)
wxParse.wxss(必须存在)
--emojis(可选)
2.引入必要文件
//要在使用的页面中引入wxparse模块
var Wxparse = require('/wxParse/wxparse.js');
3.将wxparse.css引入在app.wxss中
@import "wxParse/wxParse.wxss";
4.将富文本绑定给wxParse
格式:WxParse.wxparse(参数1,参数2,参数3,参数4,参数5);
参数说明:
* 参数1,.bindName绑定的数据名(必填)
* 参数2,type可以为html或者md(必填)
* 参数3,data为传入的具体数据(必填)
* 参数4,target为page对象,一般为this(必填)
* 参数5,imagePadding为当图片自适应是左右的单一padding(默认为0,可选)
*/
列如:
var artcle='<div>我是html代码</div>'
var that = this ;
WxParse.wxParse('article','html',article,that,5);
5.模板引用
//引用末班
<import src="/wxparse/wxParse.wxml" />
//这里data中article为bindName
<template is="wxparse" data="{{wxparseData:article.nodes}}" />
2.rich-text
- 封装数据请求
- 环境地址的统一
//env.js
module.exports={
//环境开发
dev:{
//生产环境
prod:{
baseUrl:'https://api.it120.cc'
},
//测试环境
test:{
baseUrl:"https://api.XXX.c"
}
}
}
- 业务数据请求方法的统一
- 商品列表接口
- 详情接口
- 加入收藏
- 搜索接口
- 。。。
//api.js
const{request}=require('./request.js')
//项目中用到的各种业务接口的封装
module.exports={
//商品分类接口
goodsCate:()=>{
return request('shop/goods/category/all','GET',true)
},
//banner图接口
getBanner;()=>{},
//商品详情接口
getDatail:(id)=>{
return request('shop/goods/detail',"GET",{id,id},true)
},
//其他接口...
}
- ajax的封装(ajax:axios,wx.request,xmiHttpRequest,fetch)
//request.js 针对wx.requeste的二次封装
const{baseUrl} = require('./env.js').prod
//封装ajax
const vipUrl = 'hjl'
module.exports = {
request:function(url,method="GET",data = {},isSubDomain=true){
let fullUrl = '${baseUrl}/${isSubDomain ? vipUrl : ''}/${url}';
wx.showLoading({
title;"玩命加载中".
})
return new Promise((resolve),reject)=>{
wx.request({
url:fullUrl,
method,
data,
header:{
'Content-tyle':'application.x-www-form-urlencoded'
},
success(res){
//console.log('res::',res)
if(res.statusCod === 200&&res.data.code ===0){
resolve(res.data.data)
wx.hideLoading()
}else{
wx.showToast({
title:'借口有问题,请检查',
})
reject('接口有问题,请检查')
}
},
fail(error){
wx.showToast({
title:'数据接口有问题',
})
reject('数据接口有问题')
}
})
}
}
}
微信小程序登陆授权【重点也是难点】
需要登陆授权的页面必须要传递otken
那些页面需要token
商品中详情页:收藏,加入购物车
我的:
购物车页面
token值从哪里来?
1.为何token:全段全检的一种方式,token由后端生成,token是有时效性
2.微信小程序大呢公路授权拿到token
第一步:登陆流程
wx.login()-->wx.request()-->后端-->腾讯服务
前端-->后端-->腾讯服务器
第二步:具体如何实现
登陆-->检测是否注册--没注册现货去用户信息先注册(写入公司数据库)--然后再登陆
(1)点击封装的登陆模块中的'允许'按钮--执行processlogin方法
<button class="1" open-type="getUserInfo" bindgetuserinfo="processlogin" 允许></button>
processLogin代码如下:
processLogin(e){
//如果没有用户userInfo
if(!e.detail.userInfo){
wx.showToast({
title:'取消',
icon:"none",
})
retrun;
}
//如果用userInof,则调用register注册方法
AUTH.register(this);
}
(2)register方法
async function register(page){
let _this = this;
wx.login({
success:function(res){
lot code = res.code;//微信登陆接口返回的code参数,下面注册接口需要用到
//微信小程序内置获取用户信息的api方法
wx.getuserInfo({
success:function(res){
console.log('gerUserInfo:::::::',res)
let iv = res.iv;//加密值
let encryptedData = res.encryptedData://包括敏感数据在内的完整用户信息加密数据
let referrer = ''//推荐人
let referrer_storge = wx.getStorageSync('referrer');
if(referrer_storge){
referrer = referrer_storge;
}
//下面开始调用注册接口,用封装调用接口方法去注册
WXAPI.register_complex({
code:code,
encryptedData:encryptedData,
iv:iv,
referrer:referrer
}).then(function(res){
console.log('登陆注册成功状态:'res)
_this.login(page);
})
}
})
}
})
(3)执行登陆login方法
async function login(page){
const _this = this
wx.login({
success:function(res){
WXAPI.login_wx(res.code).then(function(res){
console.log('登录成功后返回结果:::::',res)
if(res.code ==10000){
//去注册
//_this.register(page)
return;
}
if(res.code !=0){
//登陆错误
wx.showModal({
title;"无法登陆",
content:res.msg,
showCanncel:false
})
retrun;
}
//登陆成功后端返回的token和uid存储回到本地缓存中
wx.setSotageSync('token',res.data.token)
wx.setStoragesSync('uid',res.data.uid)
//如果有page,则重新刷新page对应的页面,调用wx.navigaterTo()
if(page){
page.onShow()
}
})
}
})
}
//下面两个方法主要用于检测登录状态和token是否过期
1.只检测登陆态(检测微信返回)
async function checkSession(){
retrun new Promise((resolve,reject)=>{
wx.checkSession({
swccess(){
return resolve(false)
}
})
})
}
//总体检测登录状态,包括token和微信登陆状态 返回true或false
async function checkHasLogined(){
//获取本地存储的token
const token =wx.getStoragesync('token')
//如果没有token,直接返回false
if(!token){
retrun false
}
//检测微信登陆态
//调用成功说你当前 session_key未过期,调用失败说明session_key已过期
const loggined = await checksession()
//如果没有登陆态,则移除token,并返回false
if(!loggined){
wx.removeStorageSync('token')
retrun false
}
//检测登陆token是否有效
const checkTokenRes = await WXAPI.checktoken(token)
//如果登陆token无效,一出token并返回false
if(checkTokenRes.coe ! = 0){
wx,rempvestoragesunc('token')
return false
}
//如果token并且有效,并且微信登陆态也有效则返回true
return true
}
API工厂封装的数据请求接口说明文档:
https://github.com/gooking/aipfm-wxapi/blob/master/instructuins.md
API工厂封装的数据请求源码地址:
https://github.com/gooking/apifm-wxapi/blob
}