浅谈vue项目可以从哪些方面进行优化


Posted in Javascript onMay 05, 2018

图片优化

1、图片大小优化,部分图片使用WebP(需要考虑webp兼容性)

  1. 在线生成,如智图、又拍云
  2. gulp生成,gulp-webp或gulp-imageisux
  3. canvas生成

2、减少图片请求,使用雪碧图

  1. 在线生成:sprites Generator、腾讯的gopng、spriteme
  2. 代码生成:gulp.spritesmith或者sass的compass

页面性能优化

图片或组件懒加载

使用vue-lazyload组件或其他一些组件

vue-lazyload地址: https://www.npmjs.com/package/vue-lazyload

图片懒加载:v-lazy或使用v-lazy-container包含一个图片组

// 引入一张图片 
<img v-lazy="//domain.com/img1.jpg"> 
// 引入一组图片
<div v-lazy-container="{ selector: 'img', error: 'xxx.jpg', loading: 'xxx.jpg' }">
 <img data-src="//domain.com/img1.jpg">
 <img data-src="//domain.com/img2.jpg">
 <img data-src="//domain.com/img3.jpg"> 
</div>

组件懒加载

Vue.use(VueLazyload, {
 lazyComponent: true
});
<lazy-component>
 <img class="mini-cover" :src="img.src" width="100%" height="400">
</lazy-component>

图片预加载

快速显示图片

使用场景:在某个查看图片的组件,当不断翻看下一页的图片时,从服务端获取数据再展示图片会出现图片缓慢加载的情况,此时可以在展示新数据时候先预加载图片,图片加载完之后在,将图片填充到对应位置

三方插件懒加载(按需加载)

js文件一般是同步加载的,放在页面内会阻塞主要js文件加载。

使用场景:有的项目必须引入jquery等文件时,在组件内部引入这些文件一定程度会阻塞页面渲染,因而通过特定事件(点击或者弹窗)动态加载jquery等JS文件,可以使主页面快速显示出来。

异步加载页面,如何让组件之间不重合

加载多个vue组件时,同时组件是通过服务端数据渲染时,会出现多个组件先重合后分离的状况

三种方案

  • 当页面展示的版块是固定的时候且内容高度不易变动时候,可以预先在组件外设置一个固定高度,显示的时候就像在一个框架里添加内容。当页面内容不固定时候,为了减少异步加载时组件重合的问题,可以在首屏在某组件数据加载完成时候设置其他组件显示,通过v-show显示。
  • 当页面整体固定时,可以为页面增加一个骨架,这样防止页面闪烁的情况。具体实施可以参照 https://3water.com/article/130505.htm
  • 服务端渲染页面,对于一些页面数据固定、更改较少的,可以考虑通过服务端渲染,会在短时间将页面显示出来,有比较好的用户体验。

减少引入外部文件大小

项目引入部分ElementUI内容时,通过引入babel-plugin-component配置.babelrc文件,这样即可引入部分组件,从而减少组件的大小。

路由懒加载

但使用到vue-router时,webpack会将所有组件打包在一个js文件中,这样就导致这个文件非常大,从而会影响首页的加载,最好的方法就是将其他路由分别打包到不同js文件中,切换路由时再加载对应js文件。

resolve => require([URL], resolve), 支持性好

() => system.import(URL) , webpack2官网上已经声明将逐渐废除, 不推荐使用

() => import(URL), webpack2官网推荐使用, 属于es7范畴, 需要配合babel的syntax-dynamic-import插件使用

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
Javascript &amp; DHTML 实例编程(教程)基础知识
Jun 02 Javascript
JS中 用户登录系统的解决办法
Apr 15 Javascript
深入理解JavaScript中的对象
Jun 04 Javascript
完善的jquery处理机制
Feb 21 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
浅谈JS读取DOM对象(标签)的自定义属性
Nov 21 Javascript
jQuery实现导航回弹效果
Feb 27 Javascript
详解10分钟学会vue滚动行为
Sep 21 Javascript
Vue2.0+ElementUI实现表格翻页的实例
Oct 23 Javascript
vue图片上传本地预览组件使用详解
Feb 20 Javascript
nuxt 实现在其它js文件中使用store的方式
Nov 05 Javascript
JavaScript流程控制(循环)
Dec 06 Javascript
Angular模版驱动表单的使用总结
May 05 #Javascript
浅谈Angular HttpClient简单入门
May 04 #Javascript
Vue项目全局配置微信分享思路详解
May 04 #Javascript
vue嵌套路由与404重定向实现方法分析
May 04 #Javascript
Vue.js最佳实践(五招助你成为vuejs大师)
May 04 #Javascript
详解使用jQuery.i18n.properties实现js国际化
May 04 #jQuery
node实现的爬虫功能示例
May 04 #Javascript
You might like
php数据库抽象层 PDO
2011/05/07 PHP
在WordPress中实现发送http请求的相关函数解析
2015/12/29 PHP
php 计算两个时间相差的天数、小时数、分钟数、秒数详解及实例代码
2016/11/09 PHP
PHP 并发场景的几种解决方案
2019/06/14 PHP
php的instanceof和判断闭包Closure操作示例
2020/01/26 PHP
求数组最大最小值方法适用于任何数组
2013/08/16 Javascript
js 页面元素的几个用法总结
2013/11/18 Javascript
异步动态加载JS并运行(示例代码)
2013/12/13 Javascript
js保留小数点后几位的写法
2014/01/03 Javascript
jQuery实现滑动页面固定顶部显示(可根据显示位置消失与替换)
2015/10/28 Javascript
写给小白的JavaScript引擎指南
2015/12/04 Javascript
Bootstrap编写一个在当前网页弹出可关闭的对话框 非弹窗
2016/06/30 Javascript
angularjs ui-router中路由的二级嵌套
2017/03/10 Javascript
详解vue-cli项目中用json-sever搭建mock服务器
2017/11/02 Javascript
微信公众平台获取access_token的方法步骤
2019/03/29 Javascript
react+redux仿微信聊天界面
2019/06/21 Javascript
解决Vue 刷新页面导航显示高亮位置不对问题
2019/12/25 Javascript
Python中的包和模块实例
2014/11/22 Python
python paramiko模块学习分享
2017/08/23 Python
获取Django项目的全部url方法详解
2017/10/26 Python
Python Numpy 数组的初始化和基本操作
2018/03/13 Python
Python列表解析配合if else的方法
2018/06/23 Python
Python实现去除列表中重复元素的方法总结【7种方法】
2019/02/16 Python
Python 调用 Windows API COM 新法
2019/08/22 Python
python opencv 检测移动物体并截图保存实例
2020/03/10 Python
python 日志 logging模块详细解析
2020/03/31 Python
Python WebSocket长连接心跳与短连接的示例
2020/11/24 Python
JSF面试题:如何管量web层中的Bean,用什么标签。如何通过jsp页面与Bean绑定在一起进行处理?
2012/10/05 面试题
护理专业个人求职简历的自我评价
2013/10/13 职场文书
七年级政治教学反思
2014/02/03 职场文书
经典婚礼主持开场白
2014/03/13 职场文书
治安消防安全责任书
2014/07/23 职场文书
2014年银行员工工作总结
2014/11/12 职场文书
2014年园林绿化工作总结
2014/12/11 职场文书
入党现实表现材料
2014/12/23 职场文书
Nginx解决前端访问资源跨域问题的方法详解
2021/03/31 Servers