手机端地图缩放和饿了么 tab 切换组件左右滑动切换会相互影响,因此引入 hammer.js 做手势控制
1 | // 控制手势滑动切换距离 |
echarts 中纵坐标有负值如何倒圆角
series-bar 的 data 项可以针对具体项做操作,所以这里的思路就是对原始数据遍历,对每个数据都做个性化处理,以此解决倒圆角的问题
可参考echarts-柱状图实现正负坐标倒圆角设置及 bar 颜色设置
1 | series: [ |
模拟支付宝查看基金可左滑查看更多项,也可以下滑
整体布局分为左右两块,左侧和右侧均分为上下,左侧和右侧上面绝对定位固定,布局代码如下
1 | <div class="jj-table-wrap"> |
关键点在于向左侧滑动的时候,怎么联动右侧上面的标题,思路是监听右侧下面滑动事件,在右侧下面滑动的时候,手动让右侧上方的的标题栏同步滑动,代码实现如下
1 | //横向滚动监听 |
搜索历史参照京东交互
获取当前搜索历史列表下的所有历史节点,遍历循环获取其距离左侧视口的距离,从而判断属于第几行,然后进行截断操作
1 | //历史记录 页面超出三行截取数据 |
vue 后台管理项目用户动态菜单权限
1 | //利用路由守卫,在每个路由进入之前校验登录token是否有效,如果有效,表示登录状态有效,此时如果要去的路由是登录,则直接到首页home |
超过三级嵌套路由,keep-alive 无法缓存
1、把二级的路由 name 和三级路由 name 一块 放到 include 内。
举个例子本来是缓存[menu,menu3],要把二级路由也加上,也就是[menu,menu2,menu3]
2、偷懒一点的方法,去在路由守卫里面,每次跳转的时候根据一些规则把 to.match 里面二级路由去除掉
1 | function filterRoutes(routesArr) { |
3、这个方法比较靠谱,大致思路就是把多级嵌套路由拍平成二级嵌套路由,参考无限级路由缓存方案
1 | [ |
项目文件上传功能
避免产生废文档 需要先将文件对象缓存在数据中,然后在整个表单提交的时候一起提交
当elementUI 下拉框组件下拉项过多时会引起页面卡顿
思路是利用 filterable 属性和 filter-method=”handlerSelectFilter”,一开始只渲染50条,当用户搜索的时候再从全部选项里面去找,回显的时候需要注意一下1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39handlerSelectFilter(query = "") {
let oriOpts = this.options;
let arr = oriOpts.filter((item) => {
return item.label.includes(query) || item.value.includes(query);
});
if (arr.length > 50) {
this.dictOpts = arr.slice(0, 50);
} else {
this.dictOpts = arr;
}
},
回显的时候特殊处理下,找到选中项的条目加入到现有的选项中,区分下是多选还是单选
addValueOptions() {
let oriVal = this.value;
let oriOpts =this.options;
if (_.isArray(oriVal)) {
let choosedArr = _.filter(oriOpts, (item) => {
// 从大option中找到当前条
return _.includes(oriVal, item.value);
});
this.dictOpts = _.uniqBy(choosedArr.concat(this.dictOpts), item => item.value).slice(0,168);
} else {
let target = oriOpts.find((item) => {
// 从大option中找到当前条
return item.value === oriVal;
});
if (target) {
// 将当前条与小option比对,没有则加入
if (this.dictOpts.every((item) => item.value !== target.value)) {
this.dictOpts.unshift(target);
}
}
}
},
nvm 安装 node 指定版本报错
Node.js vnode.0.0 is only available in 32-bit.
这时以管理员身份运行 cmd,然后重新 nvm install 指定版本即可
vue 隔代传递数据如何响应式
当祖先组件使用 provide 提供数据源,子孙组件通 inject 获取数据,但是获取到的数据不是响应式的,也就是说当祖先组件数据源变更的时候,子孙组件获取到的数据不会变化,还是之前的值,为了实现动态响应,可参考 react 传递函数的思路,向子孙组件提供方法而不是直接提供数据,子组件通过 coputed 属性获取数据,还可以用 watch 属性观测,授之于鱼不如授之于渔,具体代码实现如下:
1 | //父组件 |
upload组件form表单校验问题
点击提交检验时提示要上传,当上传完毕以后却没有清除表单校验信息,无论你的trigger配置的是blur还是change,都不会生效,这个时候需要upload组件上传成功回调里面,找到upload组件父组件form-item那一项,通过this.$parent或其他方式找到form-item组件实例,执行clearValidate(),实现代码如下:
1 | ... |
注:也可通过validateField针对当前上传组件字段重新校验即可。
hexo 博客相关问题和坑
1、hexo deploy 失败
1 | //报错信息如下 |
2、克隆 hexo 博客项目以后,npm isntall 报错,大致意思就是某个插件下载不下来,就是这个hexo-asset-image,这个插件是展示图片用的,在 npm install 以前先 npm install hexo-asset-image –save,否则无法安装成功。
1 | git clone git@github.com:ncumovi/blog-by-hexo.git |
3、常用 hexo 命令
hexo new"postName" #新建文章
hexo new page"pageName" #新建页面
hexo generate #生成静态页面至public目录
hexo server #开启预览访问端口 本地服务
hexo deploy #将.deploy目录部署到GitHub
hexo help # 查看帮助
hexo version #查看Hexo的版本
3、hexo 本地图片无法显示
1 | //是因为路径写的是相对路径,要改成绝对路径,之前是这样的 |