内容简介:最近在前端开发的过程中踩了不少坑,但是又没什么时间整理,先临时记录下来,往后再整理比如在
最近在前端开发的过程中踩了不少坑,但是又没什么时间整理,先临时记录下来,往后再整理
路由实例更新
vue.js
里每一次进行路由导航,对应路由的 vue.js
组件都会生成一个新的vue实例(简称 vm
),不注意这一点话会掉坑。
比如在 /home
路由里,在 mounted()
中,我在 window
下监听了一个键盘事件,为了避免事件重复绑定多次,我设立一个全局变量来标记创建的状态,只有第一次进入时才创建监听事件。
if(!window.keyupFlag){ let myFunc = ()=>{console.log(this.$refs.input1)}; //这里用箭头函数能直接在函数内拿到指向当前的vm的this window.addEventListener('keyup',myFunc); window.keyupFlag = 1; }
但是这样会导致一个问题,在我跳转到别的路由,比如 /about
后在跳转回 /home
,我在 myFunc
函数中 this.$refs.input1
就会返回 undefined
。
原因就是此时 /home
路由中的 vm
不再是第一次创建监听时 this
指向的 vm
了。
那么转换思路,改成每次进入 /home
都创建监听事件,且在创建前先清除之前创立的事件。
以及要注意的是,清除事件的 target.removeEventListener(type, listener[, options]);
,其中传入的参数要和创建时的一致,且type和listener这两个参数都是必须的,具体的可以参阅 MDN文档
这里我选择用 vuex
来保存监听的回调函数
let myFunc = ()=>{console.log(this.$refs.input1)}; let oldMyFunc = this.$store.state.myFunc; //第一次进入/home时这里还没有被myFunc赋值,第二次进入路由时就有正确的值了 window.removeEventListener('keyup',oldMyFunc); window.addEventListener('keyup',myFunc); this.$store.commit('setMyFunc',myFunc);
使用Axios发起POST请求时,产生OPTIONS请求问题
原因是跨域发起 复杂请求 时,按照新的标准浏览器会先发起一个 预检请求 OPTIONS请求来测试请求是否能被服务器接受,如果服务端对此没有相应的处理,就会出现请求失败的问题。
具体的方案待施工,先丢几个参考
Oauth2.0授权请求
相关的教程很多,但是有两点鲜有提及
- 授权服务端要设置允许发起请求的域名或ip地址
-
当使用
code
来请求access_token
时,发起的请求头Header中要设置"Authorization": ...,
具体的Authorization值可能不同的服务端会有区别,我的项目中用的是//BASE64编码字符串"clientId:clientSecret" 'Basic ' + window.btoa(clientId + ':' + clientSecret);
以上就是本文的全部内容,希望本文的内容对大家的学习或者工作能带来一定的帮助,也希望大家多多支持 码农网
猜你喜欢:- Varnish与web架构实践(施工中)
- 全屋定制施工图的监控体系建立过程简介
- 汽车运输、影视动画、建筑施工,Unite 2019 看技术如何颠覆传统?
- 前端科普系列(三):CommonJS 不是前端却革命了前端
- 前端科普系列(三):CommonJS 不是前端却革命了前端
- 前端技术演进(三):前端安全
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
UNIX环境高级编程(第3版)
史蒂文斯 (W.Richard Stevens)、拉戈 (Stephen A.Rago) / 戚正伟、张亚英、尤晋元 / 人民邮电出版社 / 2014-6-1 / 128.00元
《UNIX环境高级编程(第3版)》是被誉为UNIX编程“圣经”的Advanced Programming in the UNIX Environment一书的第3版。在本书第2版出版后的8年中,UNIX行业发生了巨大的变化,特别是影响UNIX编程接口的有关标准变化很大。本书在保持前一版风格的基础上,根据最新的标准对内容进行了修订和增补,反映了最新的技术发展。书中除了介绍UNIX文件和目录、标准I/......一起来看看 《UNIX环境高级编程(第3版)》 这本书的介绍吧!