项目背景:
在做上一个项目中,遇到过这样一个问题:
后端给的接口的数据中有公共数据,为了避免多次请求,前端避免不了的需要做数据储存,
而且如果是多次请求相同数据,前端页面的性能也将大打折扣。
【为了解决这个问题,我师父教了我一手,用$bus来储存数据,把它当成是全局的数据,然后就可以非常方便地拿到对应的值】
【在我的认知的里面,事件总线$bus只是用来处理兄弟组件之间通讯的问题,竟然还有这等妙用】
请往下看:
在main.js里面:
window.$bus = new Vue({
data() {
return {
region: false,
region_data: false,
get_ip: false,
get_access: false,测试
abc: false,测试
abd: false,测试
};
},
});
这一步就很妙啊
【bus实质上就是一个vue实例,可以直接放到了window对象里面
有了这一步操作后,我似乎感觉这个$bus里面的数据在全局都可以访问到了?
那究竟是不是呢?】
请看:
在router——index.js里面
之前我console.log()的部分我把它删掉了,但是事实证明,在router——index.js里面是可以访问到window.$bus的
而且还不用 import,非常强大,
有了这一个基础,全局储存公共数据就变得异常简单,哪还需要什么vuex啊
当然有一说一,这种方法,仅限于数据比较少,业务单一的情况,不然的话vuex该用还得用啊
好了,数据到手,后端颤抖:
注意:
【在用axios请求数据的时候,出现了一个bug】
你以为这就完了吗?
【受到上面的$bus的启发,不难发现】
事件总线还可以用来干一件很重要的事情——储存后端给前端的数据,即使后端下班回家了,我一样快乐地敲代码…
那究竟如何能实现呢?
【注:此方法仅限于json和JS格式并且数据量不大】
【步骤1】
在vue-cli——src里面创建一个mock文件夹——创建XXXX.json 或者 XXX.js 文件
容器搞好了,接下来就要动后端大佬给你的数据,嘿嘿,直接在postman里面请求一次,然后 Ctrl + c /v
最后搞到容器里面即可。
【需要注意的是,如果数据本来就是json,容器也是json文件,就可以直接粘贴到容器里】
【但如果数据是json,容器是JS文件,那就需要在容器里面export default{数据}一下】
必须满足上面我说的这两种情况,
不然在需要数据的地方import的时候,就会报文件格式的错误
个人分析:import 和 export default是息息相关的,能力有限,说不清楚。
原因解释:大佬解答
好了,数据算是成功拷贝和引入进来了,
接下来就可以直接赋值给$bus了
import static_region from "../mock/get_region.json"
import static_data from "../mock/get_count.json"
window.$bus.region = static_region
window.$bus.region_data = static_data
好了,数据又到了$bus这里了,那么就可以愉快地敲代码而不用担心后端回家?睡觉了…
写到最后,竟然有点想哭,hhh
本篇文章就是这些了,希望各位看官能有所收获
能力有限,欢迎纠错,一起进步。