浅谈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 相关文章推荐
JS 文件本身编码转换 图文教程
Oct 12 Javascript
javascript中的作用域scope介绍
Dec 28 Javascript
jquery获取checkbox的值并post提交
Jan 14 Javascript
数据分析软件之FineReport教程:[5]参数界面JS(全)
Aug 13 Javascript
javascript实现dom元素可拖动
Mar 21 Javascript
js判断是否为空和typeof的用法(详解)
Oct 07 Javascript
JavaScript模块详解
Dec 18 Javascript
node.js读取Excel数据(下载图片)的方法示例
Aug 02 Javascript
Vue filter格式化时间戳时间成标准日期格式的方法
Sep 16 Javascript
vue项目使用axios发送请求让ajax请求头部携带cookie的方法
Sep 26 Javascript
Jquery滑动门/tab切换实现方法完整示例
Jun 05 jQuery
解决vant的Toast组件时提示not defined的问题
Nov 11 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
Zerg剧情介绍
2020/03/14 星际争霸
Get或Post提交值的非法数据处理
2006/10/09 PHP
让你同时上传 1000 个文件 (二)
2006/10/09 PHP
PHP5.5在windows安装使用memcached服务端的方法
2014/04/16 PHP
PHP创建文件及写入数据(覆盖写入,追加写入)的方法详解
2019/02/15 PHP
FireFox JavaScript全局Event对象
2009/06/14 Javascript
浅说js变量
2011/05/25 Javascript
JavaScript高级程序设计(第3版)学习笔记9 js函数(下)
2012/10/11 Javascript
JQuery的Ajax中Post方法传递中文出现乱码的解决方法
2014/10/21 Javascript
在Node.js应用中读写Redis数据库的简单方法
2015/06/30 Javascript
AngularJs表单验证实例详解
2016/05/30 Javascript
JS留言功能的简单实现案例(推荐)
2016/06/23 Javascript
基于Bootstrap漂亮简洁的CSS3价格表(附源码下载)
2017/02/28 Javascript
VueJS 集成 Medium Editor的示例代码 (自定义编辑器按钮)
2017/08/24 Javascript
react-navigation 如何判断用户是否登录跳转到登录页的方法
2017/12/01 Javascript
vue实现条件叠加搜索的解决方法
2019/05/28 Javascript
小程序使用wxs解决wxml保留2位小数问题
2019/12/13 Javascript
Js和VUE实现跑马灯效果
2020/05/25 Javascript
vue 监听窗口变化对页面部分元素重新渲染操作
2020/07/28 Javascript
uniapp实现可以左右滑动导航栏
2020/10/21 Javascript
原生js实现放大镜组件
2021/01/22 Javascript
[04:17]DOTA2完美盛典,rOtk、BurNIng携手巴图演唱《倔强》
2017/11/28 DOTA
Python中文编码那些事
2014/06/25 Python
用Python实现换行符转换的脚本的教程
2015/04/16 Python
django 外键创建注意事项说明
2020/05/20 Python
Python paramiko使用方法代码汇总
2020/11/20 Python
python使用Windows的wmic命令监控文件运行状况,如有异常发送邮件报警
2021/01/30 Python
美国最大的骑马用品零售商:HorseLoverZ
2017/01/12 全球购物
Python里面如何拷贝一个对象
2014/02/17 面试题
激励员工的口号
2014/06/16 职场文书
暑期学习心得体会
2014/09/02 职场文书
大学生考试作弊检讨书
2014/09/21 职场文书
营业员岗位职责
2015/02/11 职场文书
MBA推荐信怎么写
2015/03/25 职场文书
使用react-virtualized实现图片动态高度长列表的问题
2021/05/28 Javascript
python 管理系统实现mysql交互的示例代码
2021/12/06 Python