# 微信小程序开发 --- 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.可不知道前端也不知道自己是否有携带。 所以就产生要对自己进行发送时的请求进行拦截,随即检查通过后再发送。出去。 ```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){ } } } ```