浅谈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 相关文章推荐
分享10篇优秀的jQuery幻灯片制作教程及应用案例
Apr 16 Javascript
JS编程小常识很有用
Nov 26 Javascript
jQuery拖拽 &amp; 弹出层 介绍与示例
Dec 27 Javascript
wap图片滚动特效无css3元素纯js脚本编写
Aug 22 Javascript
jQuery异步加载数据并添加事件示例
Aug 24 Javascript
moment.js轻松实现获取当前日期是当年的第几周
Feb 05 Javascript
jquery trigger函数执行两次的解决方法
Feb 29 Javascript
JS实现一个简单的日历
Feb 22 Javascript
BootStrap表单验证 FormValidation 调整反馈图标位置的实例代码
May 17 Javascript
使用Vue-Router 2实现路由功能实例详解
Nov 14 Javascript
2019年度web前端面试题总结(主要为Vue面试题)
Jan 12 Javascript
详解JS WebSocket断开原因和心跳机制
May 07 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新手上路(十四)
2006/10/09 PHP
PHP连接MongoDB示例代码
2012/09/06 PHP
PHP中ini_set与ini_get用法实例
2014/11/04 PHP
PHP+jquery实时显示网站在线人数的方法
2015/01/04 PHP
Smarty foreach控制循环次数的一些方法
2015/07/01 PHP
php表单处理操作
2017/11/16 PHP
如何取得中文输入的真实长度?
2006/06/24 Javascript
jQuery JSON实现无刷新三级联动实例探讨
2013/05/28 Javascript
jQuery实现类似滑动门切换效果的层切换
2013/09/23 Javascript
jquery表单验证框架提供的身份证验证方法(示例代码)
2013/12/27 Javascript
JavaScript简单修改窗口大小的方法
2015/08/03 Javascript
简介EasyUI datagrid editor combogrid搜索框的实现
2016/04/01 Javascript
jQuery实现的纵向下拉菜单实例详解【附demo源码下载】
2016/07/09 Javascript
jQuery Ajax传值到Servlet出现乱码问题的解决方法
2016/10/09 Javascript
JavaScript面向对象分层思维全面解析
2016/11/22 Javascript
微信小程序 数据绑定及运算的简单实例
2017/09/20 Javascript
微信小程序自定义音乐进度条的实例代码
2018/08/28 Javascript
vue中rem的配置的方法示例
2018/08/30 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
Vue项目从webpack3.x升级webpack4不完全指南
2019/04/28 Javascript
python 字典(dict)遍历的四种方法性能测试报告
2014/06/25 Python
轻松掌握python设计模式之策略模式
2016/11/18 Python
Python 实现异步调用函数的示例讲解
2018/10/14 Python
浅谈Python在pycharm中的调试(debug)
2018/11/29 Python
python通过配置文件共享全局变量的实例
2019/01/11 Python
Python使用py2neo操作图数据库neo4j的方法详解
2020/01/13 Python
Python基于pandas爬取网页表格数据
2020/05/11 Python
python Gabor滤波器讲解
2020/10/26 Python
TALLY WEiJL法国网上商店:服装、时装及配饰
2019/08/31 全球购物
TCP/IP的分层模型
2013/10/27 面试题
保险专业大学生职业规划书
2014/03/03 职场文书
以幸福为主题的活动方案
2014/08/22 职场文书
nginx简单配置多个server的方法
2021/03/31 Servers
pycharm debug 断点调试心得分享
2021/04/16 Python
python 如何将两个实数矩阵合并为一个复数矩阵
2021/05/19 Python
MongoDB连接数据库并创建数据等使用方法
2021/11/27 MongoDB