存放日常开发所撰写的Markdown文件。
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

2.6 KiB

微信小程序开发


navigateTo的两种用法:

  1. 通过url传递参数到其他界面
  2. 通NavigateTo的EventChannel回调函数来传递参数到其他界面。(推荐)

第一种就不用解释了。网上有。

解释第二种的用法:

首先:定义一个NavigateTO。

在Success中直接用:

res.eventChannel.emit('toHome',{ data: 'my from index page' })

这样就可以将ToHome的值或内容存到EventChange中。

第二:在其他界面中,我们使用下面的代码:

const eventChannel = this.getOpenerEventChannel();
// 监听 index页面定义的toHome 事件
eventChannel.on('toHome', (res) => {
console.log(res.data) // my from index page

通过上面的代码我们可以获取到其他界面存到EventChange中的内容。

进而实现界面的值传递。

登录流程


  1. 判断token是否存在
  2. 判断本地缓存是否有用户信息
  3. 判断后端数据库是否有用户存在
  4. 判断Openid、Sessionkey等相关信息

判断token是否存在

  1. 将Code 发送到后端。获取Openid、Sessionkey。
  2. 后端判断是否含有token。没有则进行登录
  3. 如果用户是未绑定微信的进行判断绑定

判断本地缓存是否存有用户信息

没有则进行请求获取。并缓存一定的用户信息再进行登录

判断后端数据库是否有用户存在。

有则进行登录,无则进行注册或绑定。

判断Openid、SessionKey等平台信息

是否过期然后继续及时更新, 并提交到后端进行缓存。

拦截器


背景:

当用户登录成功后,想进行数据获取,但后端要求前端要携带token和uid.可不知道前端也不知道自己是否有携带。

所以就产生要对自己进行发送时的请求进行拦截,随即检查通过后再发送。出去。

var token = wx.getStorgetaync('token') /// 获取本地的token值

var exportUrls = []
/// 上面的部分是用来提取信息的
function CreateHader(url,type){
  let header={},
  if(type == 'POST_PARAMS'){
    header = {
      "content-type":"application/x-www-form-urlencoded"
    }
  }else{
    header = {
      "content-type":"application/json"
    }
  }
  if(exportUrls.indexOf(url) == -1){
    let token = token.match(/authorization=([^;]*)/)[1] /// 提取其中的token值
    header['authorization'] = token
  }
  return header
}
/// 这里是对头部的格式和内容进行规范化。

function requestInterceptor(config){
  return new Promise(resolve,reject){
    if(!config.header.authorization){
      
    }
  }
}