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

作者:EternallyMaybe 时间:2024-05-09 15:19:50 

图片优化

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://www.aspxhome.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插件使用

来源:https://juejin.im/post/5ae2cb0ef265da0b767d32a0

标签:vue,项目,优化
0
投稿

猜你喜欢

  • python实现根据主机名字获得所有ip地址的方法

    2021-03-13 14:19:25
  • oracle中变长数组varray,嵌套表,集合使用方法

    2024-01-20 19:51:19
  • PHPExcel笔记, mpdf导出

    2024-06-05 09:44:57
  • 如何Tkinter模块编写Python图形界面

    2021-03-12 20:04:50
  • 详细讲解MySQL数据库对文件操作的封装

    2008-12-17 16:08:00
  • python-xpath获取html文档的部分内容

    2022-10-06 19:41:52
  • PHP格式化显示时间date()函数案例讲解

    2023-06-13 06:45:34
  • Python中的lambda和apply用法及说明

    2023-08-12 14:56:46
  • jsp自定义标签之ifelse与遍历自定义标签示例

    2023-06-25 21:09:34
  • python删除服务器文件代码示例

    2023-07-26 15:44:08
  • MySQL修改默认存储引擎的实现方法

    2024-01-20 07:51:11
  • python3.x 生成3维随机数组实例

    2021-04-11 04:02:43
  • Python关于OS文件目录处理的实例分享

    2022-12-29 08:52:07
  • 按键标示的设计体验

    2008-08-27 12:06:00
  • Python实现批量修改图片格式和大小的方法【opencv库与PIL库】

    2021-10-08 09:04:29
  • MySQL选错索引的原因以及解决方案

    2024-01-19 21:34:34
  • Python 求向量的余弦值操作

    2022-11-24 22:51:11
  • 如何把图片也存到数据库中去?

    2009-11-06 13:56:00
  • python datetime处理时间小结

    2022-11-21 01:38:15
  • pytorch--之halfTensor的使用详解

    2021-08-18 14:44:08
  • asp之家 网络编程 m.aspxhome.com