性能优化-懒加载(图片 组件 路由)
Posted 肥晨
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了性能优化-懒加载(图片 组件 路由)相关的知识,希望对你有一定的参考价值。
为什么需要懒加载?
组件、图片、路由对页面加载速度影响非常大。比如,当一个页面内容比较多的时候,加载速度就会大大的降低,极大的影响到用户体验 。更有甚者,一个页面可能会有几百个图片,但是页面上仅仅只显示前几张图片,那其他的图片是否可以晚点加载用于提高性能。
什么是懒加载?
懒加载也叫延迟加载,即在需要的时候进行加载,随用随载。在vue中组件懒加载又称为代码分割,也叫延迟加载,即在需要的时候进行加载,随用随载。
图片懒加载的实现原理
一张图片就是一个<img>标签,而图片的来源主要是依靠src属性。浏览器是否发起请求根据是否有src属性决定。在没有进到可视区的时候,就不给<img>赋src属性,这样就不会发起请求。下面重点就是对可视区的判断:
网页可见区域:
宽: document.body.clientWidth; 高: document.body.clientHeight;
包括边线的宽: document.body.offsetWidth; 包括边线的高: document.body.offsetHeight ;
网页正文全文:
宽: document.body.scrollWidth; 高: document.body.scrollHeight;
网页被卷去部分:
高: document.body.scrollTop; 左: document.body.scrollLeft;
网页正文部分
上: window.screenTop; 左: window.screenLeft;
屏幕分辨率:
高: window.screen.height; 宽: window.screen.width;
屏幕可用工作区高度: window.screen.availHeight;
了解这些我们先完成html的代码部分:
实现javascript部分:
现在我们常用的vue也有专属的方式:Vue-Lazyload
路由加载:
为什么要使用组件懒加载?
为给客户更好的客户体验,首屏组件加载速度更快一些,解决白屏问题。
路由懒加载的实现
主要方式:resolve => require([\'资源路径\'], resolve)
具体实现:
import Vue from \'vue\'
import Router from \'vue-router\'
import HelloWorld from \'@/components/HelloWorld\'
Vue.use(Router)
export default new Router({
routes: [
{
path: \'/\',
name: \'HelloWorld\',
component:HelloWorld
}
]
})
import Vue from \'vue\'
import Router from \'vue-router\'
/* 此处省去之前导入的HelloWorld模块 */
Vue.use(Router)
export default new Router({
routes: [
{
path: \'/\',
name: \'HelloWorld\',
component: resolve=>(require(["@/components/HelloWorld"],resolve))
}
]
})
组件懒加载
相同与路由懒加载
<template>
<div>
<One-com></One-com>
</div>
</template>
<script>
import One from \'./one\'
export default {
components:{
"One-com":One
}
}
</script>
<template>
<div>
<One-com></One-com>
</div>
</template>
<script>
import One from \'./one\'
export default {
components:{
"One-com":One
}
}
</script>
<template>
<div>
<One-com></One-com>
</div>
</template>
<script>
export default {
components:{
"One-com":resolve=>([\'./one\'],resolve)
}
}
</script>
以上是关于性能优化-懒加载(图片 组件 路由)的主要内容,如果未能解决你的问题,请参考以下文章
webpack性能优化:分隔/分包/异步加载+组件与路由懒加载
vue11----前端优化路由懒加载(异步组件)keep-alivelocalStorage二次封装vue-lazyload图片懒加载mint-ui封装加载loading条axios请求