重定向组件
重新定向到Home组件,多于用退出时,使其直接登陆到页面的首页
防抖
前面的所有的触发都被取消,最后一次执行在规定的时间之后才会触发,也就是说如果连续快速的触发,只会执行一次
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js"></script>
</head>
<body>
<p>
请你输入搜索的内容:<input type="text">
</p>
</body>
<script>
let input = document.querySelector('input');
input.oninput = _.debounce(function(){
console.log('ajax请求')
},1000);
//lodash插件:里面封装函数的防抖与节流的业务【闭包和延迟器】
</script>
</html>
节流
在规定的间隔时间范围内不会重复触发回调函数,只有大于这个时间间隔才会触发回调,把频繁触发变为少量触发
<html lang="en">
<head>
<meta charset="UTF-8">
<meta http-equiv="X-UA-Compatible" content="IE=edge">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Document</title>
<script src="https://cdn.bootcdn.net/ajax/libs/lodash.js/4.17.21/lodash.js"></script>
</head>
<body>
<div>
<h1>我是计数器<span></span></h1>
<button @onclick="">点击我加1</button>
</div>
</body>
<script>
let span = document.querySelector('span');
let button = document.querySelector('button');
let count = 0
// 计数器,在一秒以内,数字只能加一
button.onclick = _.throttle(function(){
// 节流:目前这个回调函数5秒执行一次,
// 假如这里面有很多的业务代码,可以给浏览器很充裕的事件去解析
count ++;
span.innerHTML = count;
console.log('执行一次')
},1000);
</script>
</html>
总结:防抖:用户操作很频繁,但是只是执行一次。节流:用户操作很频繁,但是把频繁的操作变为少量操作【可以给浏览器有充裕的时间去解析代码】,都是通过闭包+延迟期去实现
项目里面为什么要对axios进行二次封装?
请求拦截器,响应拦截器
请求拦截器,可以在发请求之前可以处理一些业务
相应拦截器:当服务器数据返回以后,可以处理一些事情
跨域问题
什么是跨域
1.协议,域名,端口号不同请求,称之为跨域
2.解决跨域问题的三种方式:JSONP,CROS,代理
解决轮播图问题
项目中日引入swiper插件,使用watch+nextTick的方式来实现轮播图
$nextTick:在下次DOM更新 循环结束之后 执行延迟回调函数。在 修改数据之后 立即使用这个方法,获取更新之后的DOM
$nextTick:可以保证也页面中的结构一定是有的,经常和很多插件一起使用【都需要DOM存在】
获取数据
切记:仓库当中的数据格式:数据的格式取决于服务器返回的数据
组件通信的方式有哪些?
1.props:用于父子组件通信
2.自定义事件:@on @emit 可以实现子给父通信
3.全局事件总线:$bus 全能
4.pubsub-js:vue当中几乎不用 全能
5.插槽
6.vuex