栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > Web开发 > JavaScript

《前端实战总结》之设计模式的应用——备忘录模式

JavaScript 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

《前端实战总结》之设计模式的应用——备忘录模式

概念介绍

备忘录模式简单的说就是在不破坏已有逻辑的前提下,将日后需要获取的数据在第一次保存下来以免造成重复且低效的操作。该设计模式最主要的任务就是对现有数据或者状态做缓存,为将来某个时刻使用或者恢复做准备。

应用场景

首先在javascript编程中,我们的应用往往是通过浏览器端向服务器发送请求来获取数据的,而请求的过程中往往会消耗一定的时间流量,对重复性数据反复请求不仅增加了服务端的压力,还会造成浏览器端对数据请求的等待进而影响用户体验。因此作为一个有逼格的程序员,有比较对这块性能做出优化。接下来举一些常见的应用场景。

1. 分页时的数据缓存

比如我们请求一个长列表,需要做分页,那么我们每次切换分页都会重新请求一次,为了优化我们可以将第一次的分页请求数据缓存,当下次再切换到这一页的时候我们会先判断缓存对象中是否有该数据,如果有就直接走缓存,没有就发起请求,并将当前的数据存入对应页数的缓存中。

2. 内容懒加载时的缓存

为了提高页面首屏渲染时间,我们往往会使用懒加载的方式,比如图片懒加载,内容数据懒加载,其原理和分页很像,比如在用户下拉时显示更多数据等,当用户切换页面后又切换回来时,我们可以将之前请求的数据缓存,这样就不用再次请求一次了,除非用户手动刷新。

3. 网站换肤

网站换肤也是目前比较常用的功能之一,比如可视化的网站,各种建站网站,目前都在走所见即所得的路子,这样可以更近一步的提高用户体验,需要平凡的改动用户的界面风格和样式,还需要提供用户撤销的功能,那么利用备忘录模式就更好不过了,他可以在用户保存之后可以不请求后端接口的情况下拿到上一步的配置参数,对于高频操作来说,这无疑大大提高了用户体验和网站性能。

4. 其他

比如系统的公共配置,用户浏览记录的缓存,路由的缓存等等,都可以用备忘录模式来提高性能,最常用的就是vue-router,我们可以使用keep-alive来缓存路由,其实原理也是类似的,如此种种,了解了备忘录模式,你的网站就有了更近一步的优化空间。

基本实现

综合以上的场景分析和讨论,我们可以抽象出一个公共的缓存方法来处理不同情景下的数据缓存。代码如下:

const baseOperateController = function() {
    // 缓存对象
    const cache = {};
    // 基础函数
    return function(params, fn, cb) {
 // 判断是否在缓存下
 if(cache[params]) {
     // 从缓存中读取并传递给业务函数
     fn(cache[params])
 }else {
     // 没有缓存则将控制权转移给外部回调函数,并传递相应参数
     cb && cb(params).then((res => {
  cache[params] = res.data;
     })).catch(err => console.log(err))
 }
    }
}

// 使用
baseOperateController(params, showView, asyncFn)
最后

如果想了解更多webpack,node,gulp,css3,javascript,nodeJS,canvas等前端知识和实战,欢迎在《趣谈前端》学习讨论,共同探索前端的边界。

更多推荐
  • 《前端实战总结》之使用postMessage实现可插拔的跨域聊天机器人
  • 《前端算法系列》如何让前端代码速度提高60倍
  • 让你瞬间提高工作效率的常用js函数汇总(持续更新)
  • 如何用不到200行代码写一款属于自己的js类库
  • 记一次老项目中的跨页面通信问题和前端实现文件下载功能
  • 《前端实战》之变量提升,函数声明提升及变量作用域详解
  • 《前端实战总结》如何在不刷新页面的情况下改变URL
  • css3实战汇总(附源码)
  • 5分钟教你用nodeJS手写一个mock数据服务器
  • 前端组件/库打包利器rollup使用与配置实战
  • web性能优化的15条实用技巧
  • 快速掌握es6+新特性及es6核心语法盘点
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/244029.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号