转:
  Vue图片懒加载原理和实现
  Vue 中实现图片预加载 + 懒加载原理实现

Vue图片懒加载原理及实现

原理分析

  先将img标签的src链接设为同一张图片(默认图片),当js监听到该图片进入可视窗口时,再将实际地址应用。

实现方法

1.判断元素是否在可视范围
1
2
3
4
5
6
7
8
9
10
11
12
/**
* 判断元素是否在可视范围
*/
function isVisible(ele){
let windowHeight = window.innerHeight
let position = ele.getBoundingClientRect()
// 当元素的top偏移量小于页面大小并且大于高度的负数
if(position.top<windowHeight && position.top>-position.height){
return true
}
return false
}
2.对图片实现懒加载
1
2
3
4
5
6
7
8
9
10
/**
* 对图片进行懒加载
*/
function lazyLoad(img, src){
if(img && src && isVisible(img)){ // 元素存在,元素未被加载,元素可见
setTimeout(function(){
img.setAttribute('src', src)
}, 1000) // 模拟网络请求
}
}
3.添加滚动监听
1
2
3
4
// 窗口滚动
window.addEventListener('scroll', function(){
lazyLoad(img, src)
})

Vue插件实现代码

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
39
/**
* 判断元素可见
*/
function isVisible(el){
let windowHeight = window.innerHeight
let position = el.getBoundingClientRect()
// 当元素的top偏移量小于页面大小并且大于高度的负数
if(position.top<windowHeight && position.top>-position.height){
return true
}
return false
}

/**
* 对图片进行懒加载
*/
function lazyLoad(img, src){
if(img && src && isVisible(img)){ // 元素存在,元素未被加载,元素可见
setTimeout(function(){
img.setAttribute('src', src)
}, 1000) // 模拟网络请求慢的情况
}
}

export default {
install(Vue, options){
Vue.directive('lazy', {
bind: function(el, binding, vnode){
el.setAttribute('src', options.loading)
window.addEventListener('scroll', function(){
lazyLoad(el, binding.value)
})
},
inserted: function(el, binding, vnode){
lazyLoad(el)
}
})
}
}

  main.js
Vue.use(myPlugin, {loading: defaultImg})

在Vue中使用 vue-lazyload插件

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
1.安装插件
npm install vue-lazyload --save-dev

2.在入口文件main.js中引入并使用
import VueLazyload from 'vue-lazyload'

直接使用
Vue.use(VueLazyload)

或者添加自定义选项
Vue.use(VueLazyload, {
preLoad: 1.3,
error: 'dist/error.png',
loading: 'dist/loading.gif',
attempt: 1
})

3.修改图片显示方式为懒加载(将 :src 属性直接改为v-lazy)
<a href="javascript:;">
<img v-lazy="'/static/img/' + item.productImage">
</a>

评论和共享

数据埋点

发布在 前端

数据埋点

定义

  所谓埋点就是在应用中特定的流程收集一些信息,用来跟踪应用使用的状况,后续用来进一步优化产品或是提供运营的数据支撑,包括访问数(Visits),访客数(Visitor),停留时长(Time On Site),页面浏览数(Page Views)和跳出率(Bounce Rate)。这样的信息收集可以大致分为两种:页面统计(track this virtual page view),统计操作行为(track this button by an event

方法

现在埋点的主流有两种方式:
  第一种:自己公司研发在产品中注入代码统计,并搭建起相应的后台查询。
  第二种:第三方统计工具,如友盟、神策、TalkingdataGrowingIO等。

指标

阅读全文
Copyrights © 2019 LittleStar. All Rights Reserved. 载入天数...载入时分秒...
字数统计:147.2k
作者的图片

LittleStar

纵豆蔻词工,青楼好梦,难赋深情


程序员


China