vue项目笔记

数字探秘者
• 阅读 1159

本文主要对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;}

19、a标签跨域下载

a标签下载,href为跨域地址时,download属性不生效,在此情况下,浏览器可以解析的文件,如txt,.png会呈现预览模式,不能解析的文件则可以继续下载。

解决方案参考:https://github.com/NinjiaHub/...

点赞
收藏
评论区
推荐文章
blmius blmius
3年前
MySQL:[Err] 1292 - Incorrect datetime value: ‘0000-00-00 00:00:00‘ for column ‘CREATE_TIME‘ at row 1
文章目录问题用navicat导入数据时,报错:原因这是因为当前的MySQL不支持datetime为0的情况。解决修改sql\mode:sql\mode:SQLMode定义了MySQL应支持的SQL语法、数据校验等,这样可以更容易地在不同的环境中使用MySQL。全局s
菜鸟阿都 菜鸟阿都
3年前
vue项目无配置文件解决方案
问题在开发vue项目时,需要重新设置项目的启动端口,发现项目目录中并没有相关的配置文件【config目录】vue脚手架版本【通过vueversion查询】:@vue/cli4.5.13解决方案在vue项目根目录下创建vue.config.js配置文件vue.config.jsmodule.exportsdevServer:d
添砖java的啾 添砖java的啾
4年前
distinct效率更高还是group by效率更高?
目录00结论01distinct的使用02groupby的使用03distinct和groupby原理04推荐groupby的原因00结论先说大致的结论(完整结论在文末):在语义相同,有索引的情况下groupby和distinct都能使用索引,效率相同。在语义相同,无索引的情况下:distinct效率高于groupby。原因是di
Easter79 Easter79
3年前
Vue 项目中各种痛点问题及方案
!(https://oscimg.oschina.net/oscnet/ad4bd1bfa4464061944b82e4f8fd73ac.jpg)最近要求使用vue进行前后端分离开发微信公众号,不断摸索踩坑之后,总结出如下几点vue项目开发中常见的问题及解决办法。列表进入详情页的传参问题本地开发环境请求服务器接
Stella981 Stella981
3年前
JS 苹果手机日期显示NaN问题
问题描述newDate("2019122910:30:00")在IOS下显示为NaN原因分析带的日期IOS下存在兼容问题解决方法字符串替换letdateStr"2019122910:30:00";datedateStr.repl
Stella981 Stella981
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
mysql设置时区
mysql设置时区mysql\_query("SETtime\_zone'8:00'")ordie('时区设置失败,请联系管理员!');中国在东8区所以加8方法二:selectcount(user\_id)asdevice,CONVERT\_TZ(FROM\_UNIXTIME(reg\_time),'08:00','0
Easter79 Easter79
3年前
SpringBoot整合Redis乱码原因及解决方案
问题描述:springboot使用springdataredis存储数据时乱码rediskey/value出现\\xAC\\xED\\x00\\x05t\\x00\\x05问题分析:查看RedisTemplate类!(https://oscimg.oschina.net/oscnet/0a85565fa
Wesley13 Wesley13
3年前
MySQL部分从库上面因为大量的临时表tmp_table造成慢查询
背景描述Time:20190124T00:08:14.70572408:00User@Host:@Id:Schema:sentrymetaLast_errno:0Killed:0Query_time:0.315758Lock_
Python进阶者 Python进阶者
1年前
Excel中这日期老是出来00:00:00,怎么用Pandas把这个去除
大家好,我是皮皮。一、前言前几天在Python白银交流群【上海新年人】问了一个Pandas数据筛选的问题。问题如下:这日期老是出来00:00:00,怎么把这个去除。二、实现过程后来【论草莓如何成为冻干莓】给了一个思路和代码如下:pd.toexcel之前把这
美凌格栋栋酱 美凌格栋栋酱
5个月前
Oracle 分组与拼接字符串同时使用
SELECTT.,ROWNUMIDFROM(SELECTT.EMPLID,T.NAME,T.BU,T.REALDEPART,T.FORMATDATE,SUM(T.S0)S0,MAX(UPDATETIME)CREATETIME,LISTAGG(TOCHAR(