存放日常开发所撰写的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.

112 lines
2.6 KiB

3 years ago
# 微信小程序开发
---
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中的内容。
进而实现界面的值传递。
3 years ago
## 登录流程
---
1. 判断token是否存在
2. 判断本地缓存是否有用户信息
3. 判断后端数据库是否有用户存在
4. 判断Openid、Sessionkey等相关信息
#### 判断token是否存在
1. 将Code 发送到后端。获取Openid、Sessionkey。
3 years ago
2. 后端判断是否含有token。没有则进行登录
3. 如果用户是未绑定微信的进行判断绑定
#### 判断本地缓存是否存有用户信息
没有则进行请求获取。并缓存一定的用户信息再进行登录
#### 判断后端数据库是否有用户存在。
有则进行登录,无则进行注册或绑定。
#### 判断Openid、SessionKey等平台信息
是否过期然后继续及时更新, 并提交到后端进行缓存。
## 拦截器
---
背景:
当用户登录成功后,想进行数据获取,但后端要求前端要携带token和uid.可不知道前端也不知道自己是否有携带。
所以就产生要对自己进行发送时的请求进行拦截,随即检查通过后再发送。出去。
```JavaScript
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){
}
}
}
```