接口路径格式:公共地址部分/专属域名/前端接口文档中的最好一部分

解析富文本
	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
}