在移动端web中会遇到300ms点击延迟的问题,这个时候可以使用fastclick来解决这个问题。
引入fastclikc
import FastClick from 'fastclick'
使用fastclick
FastClick.attach(document.body)
如果网速过慢。比如一个dom中有图片、就会出现突然出现一张图片的问题。导致页面变化、这个时候如果是移动端我觉得可以加一个loading来处理这种问题。同时在一开始的时候就预留位置
overflow hidden
width 25%
height 0
padding-bottom 25%
注意%、这里的百分比是相对宽度的百分比,其比值为图片的高宽比。
如果我们给样式设置了scoped,这个时候组件里面的样式既不能影响外部样式,也不能比外部样式所影响、如果我们有要影响我们所使用的子组件的样式需求,我们需要进行穿透 query >>> query query为选择器,例如:
.icons >>> .swiper-container
overflow hidden
height 0
padding-bottom 50%
使用axios获取数据传递给轮播组件以后直接显示了最后一页,此时可以使用v-if来解决问题、因为在还没有获取到数据的时候是根据空的创建的
在我们使用一些滚动事件的时候,我们可以设置节流来提高效率,比如滚动事件如果在一定时间内连续滚动则不进行处理,直到最后确定滚动出来了,这样能提高性能。常见解决方式是设置一个定时器来进行解决
if (this.timer) {
clearTimeout(this.timer)
}
this.timer = setTimeout(() => {
const touchY = e.touches[0].clientY - 79
const index = Math.floor((touchY - this.startY) / 20)
if (index >= 0 && index < this.letters.length) {
this.$emit('chooseLetter', this.letters[index])
}
}, 16)
使用keep-alive可以进行缓存,这样就不会每次进入相同的页面都会进行数据请求了,能提高用户体验、在使用keep-alive以后会多两个生命周期函数:activated以及deactivated,我们可以在这里进行一些判断操作,来决定是否需要缓存,是否需要执行数据获取。此外,如果我们是给整个路由router-view组件进行了keep-alive,并且在这里执行了一些exinclude设置
<keep-alive exclude="Detail">
<router-view/>
keep-alive>
那么对应的里面就没有这两个生命周期函数了,我们不能使用这两个函数
如果我们插入swipper中的DOM有所变化,那么滚动效果就会变得非常的差,这个时候我们可以设置他的swipperOptions里面的observeParents以及observer
data () {
return {
swiperOption: {
pagination: '.swiper-pagination',
paginationType: 'fraction',
observeParents: true,
observer: true
}
}
},
如果把事件绑定到window上面比如scroll事件,那么在推出这个页面的时候一定要进行解绑,不然在其他的页面也会受到这个事件的影响,造成bug
mounted () {
window.addEventListener('scroll', this.handleScroll)
},
beforeDestroy () {
window.removeEventListener('scroll', this.handleScroll)
}
如果我们的某个页面是滚动的,切设置了keep-alive,那么我们进入其他页面返回的时候如果读取了缓存,那么这个缓存是包括滚动行为的,则原来页面滚动到什么位置现在也滚动到什么位置如果我们不希望出现这种情况,可以在路由中设置滚动行为
scrollBehavior (to, from, savedPosition) {
return { x: 0, y: 0 }
}
个人感觉vue是一种简单、但是约束性很强的框架,繁琐,但是稳定、搭配一些开发工具其实很可以保证团队代码质量,但是写起了确实有点烦,但是单文件结构很舒服,省去了很多的命名烦恼,但是也带来了新的问题,以前进行样式复用通过良好的css命名,而现在通过组件,怎么编写一个优秀的组件其实挺考验人的