vue开发简易云笔记总结

360 阅读2分钟

一、项目介绍

vue云笔记项目是一个基于Vue、Vuex、VueRouter的前后端分离应用,由本人设计和实现,期间所遇到的问题大多记录在博客中,预览链接

二、知识点

1、less语法
2、vue常用指令以及属性
3、异步Promise
4、Axios网络请求库
5、Markdown-it插件的基本使用
6、使用element-ui组件美化消息效果
7、重构与模块化
8、Vue Router
9、Vuex状态管理

三、问题与解决方案

1、进入登录页面后输入正确的用户名和密码,消息弹出登录成功又显示请先登录,控制台报错说未登录

39e9291f02bb59a768e5c12b359ee8f.png
原因:由于chrome在2020年3月份升级了安全策略,对于跨域请求如果想写入cookie,必须是https的网站才可以。对于http的网站,cookie写入总是失败。
因此需要修改build/webpack.dev.conf 文件,在devServer里添加https: true,还得在在请求接口添加如下代码

axios.defaults.withCredentials = true; //允许跨域携带cookie信息;后段设置Access-Control-Allow-Origin不能为 " * ",必须是你的源地址啊

允许跨域后,在浏览器输入路径时将http改未https,并且在当前页面用键盘输入 thisisunsafe
2、登录后需要刷新头像才会更新
本质上就时数据管理的问题,一开始在头像组件Avatar自己定义username,没有数据就用“未登录”的未字,但是由于父子组件生命周期的问题导致出现头像变化闪现太明显

image.png
(1)采用事件总线EventBus的方式来解决问题 (2)采用vuex状态管理,在store里的user.js文件里定义好一个getter
3、引入Element-UI使用MessageBox弹框出现闪退的现象
由于滥用事件修饰符的.stop和.prevent,造成在笔记本页面点击删除和编辑按钮时出现MessageBox弹框闪退的现象再由于按钮所使用的是a标签且没有阻止默认事件,增加了问题的排查难度,发现点击按钮后地址栏发生了改变,因此可以写成a标签可以这样写href="javascript:void(0);" 避免改变地址,同时牢记.stop阻止事件继续传播,.prvent阻止默认事件
4、vue @input输入框使用节流函数
这是一个常见的业务场景再input输入完成后需要发送请求执行后续操作,频繁的事件触发会导致接口请求过于频繁。所以需要我们对此加以限制,来禁止不必要的请求,以免资源的浪费~

import _ from "lodash";

先引入lodash

image.png 在需要的地方使用并设置好时间