下面看下通过vue提供的维生减少对服务器的请求次数
VUE2.0中提供了一个维生方法,可以用来缓存组件,避免多次加载相应的组件,减少性能的消耗。比如,一个页面的数据包括图片,文字等用户都已经加载完了,然后用户通过点击跳转到了另外一个界面。然后从另外一个界面通过返回又回到了原先的界面。如果没有设置的话,那么原先界面的信息就要重新向服务器请求得到。而通过vue提供的点火电极可以是页面的已经请求的数据得以保存,减少请求的次数,提高用户的体验程度。
,,,,,,,缓存组件又分为两种,缓存整个站点的页面的组件或者缓存部分页面的组件。
,,,,,,,,1、缓存所有的页面,适用于每个页面都有请求的情况。方法如下,在需要缓存的router-view用点火电极标签进行包裹起来。
& lt; keep-alive> & lt; router-view> & lt;/router-view> & lt;/keep-alive>
,,,,,,,,,,,,,将首次触发请求写钩到创建子里边,就能实现缓存。比如从列表页,去了详情页,回来还是原来的页面。
,,,,,,,,,,2、缓存部分组件或者页面,使用router.meta这个属性通过判断的方法可以实现。方法如下:,,,,,,,,,,,,,,,,,,,,,,,,,,,
& lt;维生v=" $ route.meta.keepAlive "比; & lt; router-view> & lt;/router-view> & lt;/keep-alive> & lt; router-view v=" !美元route.meta.keepAlive”祝辞& lt;/router-view>
,,,,,,,,,,,,,,,,,,,,路由器设置如下:,,,,,,,,,,,,,,
路由器:[ {路径:/home, 名称:回家, 元:{keepAlive:真}//设置为真实表示需要缓存,不设置或者假表示不需要缓存} )
,,,,,,还可以通过新增的属性包括/排除来设置。见名思意,包括包含的意思,排除除了的意思。这里需要用到组件的名称即名字来进行设置,所以名字肯定就要加上了只加入a、b组件需要缓存,c, d组件不需要缓存。写法如下:
& lt;点火电极包括=" a、b "比; & lt; component> & lt;/component> & lt;/keep-alive> & lt;维生排除=" c, d "比; & lt; component> & lt;/component> & lt;/keep-alive>>之前, vue项目的优化还可以通过组件的按需加载来实现,就像图片的懒加载一样,如果客户根本就没有看到那些图片,而我们却在打开页面的时候全部给加载完了,这样会大大的增加请求的时间,降低用户的体验程度。懒加载在很多的网站都有用的到,比如淘宝,京东等等这样的购物网站,上面的图片链接等等都很多,如果你把滚轴迅速的往下拉的时候,你可能会看到图片加载的情况。
<强> Vue路由开启维生时的注意点强>
这个不是业务的要求,但是看到每次进入页面就重新渲染DOM然后再获取数据更新DOM,觉得作为一个前端工程师有必要优化下的加载逻辑,正好vue提供了点火电极的功能,所以就试用了下。当然,干任何事儿都不会一帆风顺的,在路上的磕磕碰碰在所难免,故在此记录下遇到的问题,希望看到这篇文章的人能有所帮助每分钟:这个也没多难。
HTML部分:
& lt; template> & lt; div类=在“应用程序”; & lt; keep-alive> & lt; router-view> & lt;/router-view> & lt;/keep-alive> & lt;/div> & lt;/template> JavaScript部分: … 创建:函数(){ console.log (1) }, 安装:函数(){ console.log (2) }, 激活:函数(){ console.log (3) }, 停用:函数(){ console.log (4) }<强> ..... 1。什么阶段获取数据强>
页面生命周期钩子如上面的代码所示,这四个是最常用到的部分。这部分需要注意下,当引入维生的时候,页面第一次进入,钩子的触发顺序创建→安装→激活,退出时触发停止。当再次进入(前进或者后退)时,只触发激活。
我们知道维生之后页面模板第一次初始化解析变成HTML片段后,再次进入就不在重新解析而是读取内存中的数据,即,只有当数据变化时,才使用VirtualDOM进行diff更新。故,页面进入的数据获取应该在激活中也放一份。数据下载完毕手动操作DOM的部分也应该在激活中执行才会生效。
所以,应该激活中留一份数据获取的代码,或者不要创建的部分,直接将中创建的代码转移到激活中。
通过vue提供的维生减少对服务器的请求次数