点击上方蓝字关注我哦1v-if与v-show区分使用场景

v-if是真正的条件渲染,因为它会确保在切换过程中条件块内的事件监听器和子组件适当地被销毁和重建;也是惰性的:如果在初始渲染时条件为假,则什么也不做,直到条件第一次变为真时,才会开始渲染条件块。

v-show就简单的多,不管初始条件是什么,元素总是会被渲染,并且只是简单地基于CSS的display属性进行切换。

所以,v-if适用于在运行时很少改变条件,不需要频繁切换条件的场景;v-show则适用于需要非常频繁切换条件的场景。

2computed和watch区分使用场景

computed:是计算属性,依赖其它属性值,并且computed的值有缓存,只有它依赖的属性值发生改变,下一次获取computed的值时才会重新计算computed的值;

watch:更多的是「观察」的作用,类似于某些数据的监听回调,每当监听的数据变化时都会执行回调进行后续操作;

运用场景:

  • 当我们需要进行数值计算,并且依赖于其它数据时,应该使用computed,因为可以利用computed的缓存特性,避免每次获取值时,都要重新计算

  • 当我们需要在数据变化后执行异步或者开销较大的操作时,应该使用watch,使用watch选项允许我们执行异步操作(访问一个API),限制我们执行该操作的频率,并在我们得到最终结果前,设置中间状态,这些都是计算属性无法做到的。

3v-for遍历必须为item添加key,且同时避免使用v-if

  1. v-for遍历必须为item添加key

当列表数据进行遍历渲染时,需要为每一项item设置唯一的key值,方便Vue.js内部机制精准找到该条列表数据。当state更新时,新的状态值和旧的状态值对比,较快地定位到diff。

2. v-for遍历避免同时使用v-if

v-for比v-if优先级高,如果每一次都需要遍历整个数组,将会影响速度,尤其是当之需要渲染很小一部分的时候,必要情况下应该替换成computed属性。

推荐写法:

1

2  3    v-for="user in activeUsers"4    :key="user.id">5    {{ user.name }}6  78computed: {9  activeUsers: function () {10    return this.users.filter(function (user) {11     return user.isActive12    })13  }14}

不推荐写法:

1

4长列表性能优化

Vue会通过Object.defineProperty对数据进行劫持,来实现视图响应数据的变化,然而有些时候我们的组件就是纯粹的数据展示,不会有任何改变,我们就不需要Vue来劫持我们的数据,在大量数据展示的情况下,这能够很明显的减少组件初始化的时间,那如何禁止Vue劫持我们的数据呢?可以通过Object.freeze方法来冻结一个对象,一旦被冻结的对象就再也不能被修改了。

1

5事件的销毁

Vue组件销毁时,会自动清理它与其它实例的连接,解绑它的全部指令及事件监听器,但是仅限于组件本身的事件。如果在js内使用addEventListene等方式是不会自动销毁的,我们需要在组件销毁时手动移除这些事件的监听,以免造成内存泄露。如:

1created() {

6图片资源懒加载

对于图片过多的页面,为了加速页面加载速度,所以很多时候我们需要将页面内未出现在可视区域内的图片先不做加载,等到滚动到可视区域后再去加载。这样对于页面加载性能上有很大的提升,也提高了用户体验。我们在项目中使用Vue的vue-lazyload插件:

  1. 安装插件

1npm 

2.在入口文件main.js中引入并使用

1

或者

1

3.在vue文件中将img标签的src属性直接改为v-lazy,从而将图片显示方式更改为懒加载显示:

1

以上为vue-lazyload插件的简单使用,官网:https://github.com/hilongjw/vue-lazyload

7路由懒加载

Vue是单页面应用,可能会有很多的路由引入,这样使用webpack打包后的文件很大,当进入首页时,加载的资源过多,页面会出现白屏的情况,不利于用户体验。如果我们能把不同路由对应的组件分隔成不同的代码块,然后当路由被访问的时候才加载对应的组件,这样就更加高效了。这样会大大提高首屏显示的速度,但是可能其他的页面速度就会降下来。

路由懒加载:

1

8第三方插件的按需引入

我们在项目中经常会需要引入第三方插件,如果我们直接引入整个插件,会导致项目的体积太大,我们可以借助babel-plugin-component,然后可以只引入需要的组件,以达到减小项目体积的目的。以下为项目中引入element-ui为例:

  1. 首先,安装babel-plugin-component

1npm 

2. 然后,将。babelrc修改为:

 1{

3. 在main.js中引入部分组件:

1

9优化无限列表性能如果你的应用存在非常长或者无限滚动的列表,那么需要采用 窗口化 的技术来优化性能,只需要渲染少部分区域的内容,减少重新渲染组件和创建 dom 节点的时间。你可以参考以下开源项目 vue-virtual-scroll-list 和 vue-virtual-scroller  来优化这种无限列表的场景的。10服务端SSR or 预渲染

服务端渲染是指 Vue 在客户端将标签渲染成的整个 html 片段的工作在服务端完成,服务端形成的 html 片段直接返回给客户端这个过程就叫做服务端渲染。

(1)服务端渲染的优点:

  • 更好的 SEO:因为 SPA 页面的内容是通过 Ajax 获取,而搜索引擎爬取工具并不会等待 Ajax 异步完成后再抓取页面内容,所以在 SPA 中是抓取不到页面通过 Ajax 获取到的内容;而 SSR 是直接由服务端返回已经渲染好的页面(数据已经包含在页面中),所以搜索引擎爬取工具可以抓取渲染好的页面;

  • 更快的内容到达时间(首屏加载更快):SPA 会等待所有 Vue 编译后的 js 文件都下载完成后,才开始进行页面的渲染,文件下载等需要一定的时间等,所以首屏渲染需要一定的时间;SSR 直接由服务端渲染好页面直接返回显示,无需等待下载 js 文件及再去渲染等,所以 SSR 有更快的内容到达时间;

(2)服务端渲染的缺点:

  • 更多的开发条件限制:例如服务端渲染只支持 beforCreate 和 created 两个钩子函数,这会导致一些外部扩展库需要特殊处理,才能在服务端渲染应用程序中运行;并且与可以部署在任何静态文件服务器上的完全静态单页面应用程序 SPA 不同,服务端渲染应用程序,需要处于 Node.js server 运行环境;

  • 更多的服务器负载:在 Node.js 中渲染完整的应用程序,显然会比仅仅提供静态文件的 server 更加大量占用CPU 资源,因此如果你预料在高流量环境下使用,请准备相应的服务器负载,并明智地采用缓存策略。

如果你的项目的 SEO 和 首屏渲染是评价项目的关键指标,那么你的项目就需要服务端渲染来帮助你实现最佳的初始加载性能和 SEO,具体的 Vue SSR 如何实现,可以参考作者的另一篇文章《Vue SSR 踩坑之旅》。如果你的 Vue 项目只需改善少数营销页面(例如  /, /about, /contact 等)的 SEO,那么你可能需要预渲染,在构建时 (build time) 简单地生成针对特定路由的静态 HTML 文件。优点是设置预渲染更简单,并可以将你的前端作为一个完全静态的站点,具体你可以使用 prerender-spa-plugin 就可以轻松地添加预渲染 。

注意:来源于网络整理(原作者:我是你的超级英雄),如侵权,请联系管理员删除

相关推荐

web前端面试题-vue基础篇(一)

web前端面试题-vue基础篇(二)

web前端面试题-vue基础篇(三)

▼更多前端知识,请长按二维码▼“在看”的小可爱永远十八岁!

vue dve环境static无法被外部访问_vue项目性能优化(代码层面)相关推荐

  1. 接手同事vue项目两个月的血和泪,关于vue项目性能优化,缩短首屏加载时间

    最近接手了别人做的vue项目,项目跑起来后,有些页面很卡,首屏加载也慢,打包速度也慢.于是,研究了很久vue的项目性能优化,下面我将从两个部分来详解vue项目的性能优化: 代码优化 webpack打包 ...

  2. Vue项目性能优化篇

    Vue项目性能优化是个老生常谈的问题了,本人开发过程中也查过很多关于Vue项目优化的文章,每篇文章说的都差不多,本章我就结合我的心得和大家的智慧做一个总结. 1.懒加载 懒加载应该是提高性能的最简单有 ...

  3. vue项目性能优化——断点续传

    vue项目性能优化 用户上传文件的时候,如果文件过大,那么上传可能就会很耗时.而且一旦上传的过程中发生了网络中断,那上传就前功尽弃了.为了提高用户的体验,我们可以选择断点续传,也就是把文件切分成小块后 ...

  4. Vue 项目性能优化方案

    前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM:但 Vue 项目中仍然存 ...

  5. 前端Vue 项目性能优化

    前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术,帮我们处理了前端开发中最脏最累的 DOM 操作部分, 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM:但 Vue 项目中仍然存 ...

  6. Vue项目性能优化方案

    一.代码层面的优化  1.v-if和v-show的使用场景  (1)v-if适用于在运行时很少改变条件,不需要频繁切换条件的场景,属于真正的条件渲染,会确保在切换过程中,元素适当的被销毁和重建,也是惰 ...

  7. vue 引入pdf跨域问题怎么解决_VUE项目中的跨域问题

    [摘要]跨域问题是前端开发人员比较常见的问题, 那么跨域出现的原因, 该如何解决跨域, VUE中对跨域又是怎样处理的呢 [作者]田鋆鹏 一. 前端为什么会出现跨域问题? 跨域问题是浏览器同源策略限制, ...

  8. vue 一个页面有点请求需要同时发送_前端性能优化,这些你都需要知道

    来源: 海洋里的魔鬼鱼 前言 最近花了一些时间在项目的性能优化上,背后做了很多工作,但是最后依然没有达到自己想要的结果,有些失望,但是还是记录下自己的执着. 性能优化总结:减少请求次数.减小资源大小. ...

  9. 有关前端性能优化的方案—Vue 代码层面性能优化+Webpack 层面的优化+基础的 Web 技术优化+非框架代码优化

    文章目录: 一.代码层面的优化 1.1.v-if 和 v-show 区分使用场景 1.2.computed 和 watch 区分使用场景 1.3.v-for 遍历必须为 item 添加 key,且避免 ...

最新文章

  1. 谁都会做:简单易行的祛斑法 - 健康程序员,至尚生活!
  2. java 模拟 cmd_用JAVA模拟实现CMD命令行
  3. 【服务器】WAMP一键安装PHP开发环境
  4. Js打印object对象两种方法
  5. rust连接不上社区服务器 显示超过时间,rust链接服务器超时
  6. google 浏览器下载历史版本的方法
  7. 10个超高清图片素材网站,不需要翻墙就可以直接访问
  8. MEMORY系列之“DDR概述”
  9. android键盘坏了怎么办,手机虚拟键盘失灵怎么办
  10. 交互式电子杂志_HUAWEI Magazine电子杂志阅读平台上线
  11. 史上最猛“员工”,疯狂吐槽亿万富翁老板小扎:那么有钱,还总穿着同样的衣服!
  12. python学习知识点
  13. knn sklearn
  14. 微服务SpringCloud的平台架构及原理分析
  15. 华擎主板的instant flash功能问题
  16. 程序的CPU执行时间
  17. php+server注册机制,ECMall的注册与登录机制
  18. 越老越吃香的计算机专业,大四学长:最有前途的4个理工专业,毕业工作不愁,还越老越吃香...
  19. Python 爬虫工具——notebook
  20. 【期末复习】网络空间安全导论

热门文章

  1. Redis高可用之持久化
  2. HP/Aruba 2620系列交换机DHCP中继配置方法
  3. failed to accept an incoming connection: connection from 192.168.1.114 rejected, allowed hosts: 1
  4. 安装CentOS 6/7
  5. Excel中,通过 「条件格式」 实现, 下拉菜单选择某个值时,这一行的颜色改变。
  6. Excel中的变量 「 Ctrl + F3 」 查看
  7. 关于VBA中【按钮的改名】 和 【函数名字的改变】
  8. C#Winform频繁刷新导致界面闪烁解决方法
  9. dubbo接口统一异常处理的两种方式
  10. 解决小程序背景图片在真机上不能查看的问题