vue项目笔记
本文主要对vue项目研发中的问题积累及解决思路记录,如有问题或者更好的解决方案,请指点下
1、 vue多重请求异步问题。
解决方案:1.迭代转同步 影响运行速度,效率较低; 2.promise.all(iterable) :依旧是异步实现,效率相同 =》参考文档:https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Reference/Global_Objects/Promise/all
2、 vue-router 切换
先加载新的组件,等新的组件渲染好但还没挂载前,销毁旧组件,挂载新组件; 新組件: beforeCreate 新組件: created 新組件: beforeMount 舊組件: beforeDestroy 舊組件: destroy 新組件: mounted Ps:跨组件传值尽量使用vuex;
3、 vue 数据传递 => https://blog.csdn.net/sinat_1...
vuex props eventBus
4、 数组更新检测
Push()可以直接更新到页面 使用索引赋值或者改变数组长度时可以使用$set或splice()方法。 ‘=’赋值可使用nextTick()函数
5、 vue排坑之this
一般使用箭头函数,普通的function需要观察this对象指向。 Axios请求时this指向不是vue而是undefined 原始写法:bind(this) 》》》改变匿名函数的指向对象 Hack写法 》》》var _this = this; 现写法:箭头函数 ==》 原理:es6箭头函数中的内部this是词法作用域,由上下文确定(即外层调用者vue)
6、 position: sticky CSS样式技巧 页面上划悬浮标题
7、 动态样式绑定
v-bind:class="['tab-button', { active: currentTab === tab }]" 动态类名绑定,等同于addClassName removeClassName;
8、 tab切换菜单 实现 ====》 动态组件 写法案例:https://jsfiddle.net/o3nycadu...
<component v-bind:is="currentTabComponent" class="tab" ></component> <keep-alive> </keep-alive> ==》用于组件不受v-if干扰,缓存组件原有状态。也可在组件注册时,可以在组件后添加keepalive参数,方便做部分缓存。
9、 前端权限设置
Vue-router必须要在vue实例化之前挂载上去,vue2.0可以通过addRoutes实现前端路由的动态改变。 刷新新增页面丢失的问题解决方案:1、将路由地址列表存在本地,加载之前判断,无信息就从本地获取,2、信息丢失从后台重新获取地址列表
10、 虚拟DOM
虚拟DOM可以提高运行效率,避免js频繁操作dom而产生的卡顿问题。 参考文献:https://www.cnblogs.com/fuGuy/p/9220106.html
11、 大型spa项目状态量方案:
A、 router属性meta中传入字面量对象 {path:'index',component:Index,meta:{showBtn:true}} B、 设置全局状态 :vuex
12、 assets和static的区别
assets中存放的静态文件是会经过webpack处理的,一般放一些图片之类的静态资源,而static则不会收到webpack的影响,调用的时候也是通过绝对路径调用的,通常用来存放一些第三方的静态资源库。项目中调用static中的静态资源时,可能会出现打包后加载失败的问题。引用本地可以将资源放在src下面,以避免由于打包后根目录而导致地址变化的问题。
13、 v-cloak: 防止页面加载时出现 vuejs 的变量名。
14、 table内tbody滚动(威易网CSS教程)
table tbody {
display:block; height:195px; overflow-y:scroll;
}
table thead, tbody tr {
display:table; width:100%; table-layout:fixed;
}
table thead {
width: calc( 100% - 1em ) }
15、 js跳出循环
forEach()无法在所有元素遍历完之前终止循环,不支持break、continue关键字 解决方案:renturn false可以不执行当前循环指令以下的代码,可以充当continue; Try catch抛出异常可跳出循环,起到break的作用;
16、Sass rem换算比率
@function rem($val){ return $val/25*1rem }
17、样式穿透
css穿透使用 >>> .form-item >>> .el-input__inner{ height: 36px; line-height: 36px; } sass穿透 /deep/ .form-item /deep/ .el-input__inner{ height: 36px; line-height: 36px; }
18、elementui table head边界不对齐问题:
body .el-table th.gutter{display: table-cell!important;}
相关推荐
学习web前端 2020-09-28
小焊猪web前端 2020-09-10
yuzhu 2020-11-16
85477104 2020-11-17
KANSYOUKYOU 2020-11-16
sjcheck 2020-11-03
怪我瞎 2020-10-28
源码zanqunet 2020-10-28
gloria0 2020-10-26
王军强 2020-10-21
QiaoranC 2020-09-25
anchongnanzi 2020-09-21
安卓猴 2020-09-12
Macuroon 2020-09-11
kiven 2020-09-11
LittleCoder 2020-09-11
Cheetahcubs 2020-09-13
颤抖吧腿子 2020-09-04
softwear 2020-08-21