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

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


概念介绍



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


应用场景



首先在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)


目录
相关文章
|
1月前
|
前端开发 JavaScript 安全
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第27天】本文介绍了HTTP/2和HTTPS在前端性能调优中的应用。通过多路复用、服务器推送和头部压缩等特性,HTTP/2显著提升了Web性能。同时,HTTPS确保了数据传输的安全性。文章提供了示例代码,展示了如何使用Node.js创建一个HTTP/2服务器。
49 3
|
19天前
|
前端开发
结合具体案例分析Gitflow分支策略在大型前端项目中的应用优势
通过这个具体案例可以看出,Gitflow 分支策略在大型前端项目中能够提供有条不紊的开发环境,保障项目的稳定性和持续发展。
|
27天前
|
缓存 前端开发 搜索推荐
前端性能优化实战:提升网页加载速度
前端性能优化实战:提升网页加载速度
|
1月前
|
Rust 前端开发 JavaScript
前端性能革命:WebAssembly在高性能计算中的应用探索
【10月更文挑战第26天】随着Web应用功能的日益复杂,传统JavaScript解释执行模式逐渐成为性能瓶颈。WebAssembly(Wasm)应运而生,作为一种二进制代码格式,支持C/C++、Rust等语言编写的代码在浏览器中高效运行。Wasm不仅提升了应用的执行速度,还具备跨平台兼容性和安全性,显著改善了Web应用的响应速度和用户体验。
42 4
|
1月前
|
前端开发 数据管理 测试技术
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第27天】本文介绍了前端自动化测试中Jest和Cypress的实战应用与最佳实践。Jest适合React应用的单元测试和快照测试,Cypress则擅长端到端测试,模拟用户交互。通过结合使用这两种工具,可以有效提升代码质量和开发效率。最佳实践包括单元测试与集成测试结合、快照测试、并行执行、代码覆盖率分析、测试环境管理和测试数据管理。
56 2
|
1月前
|
前端开发 安全 应用服务中间件
前端性能调优:HTTP/2与HTTPS在Web加速中的应用
【10月更文挑战第26天】随着互联网的快速发展,前端性能调优成为开发者的重要任务。本文探讨了HTTP/2与HTTPS在前端性能优化中的应用,介绍了二进制分帧、多路复用和服务器推送等特性,并通过Nginx配置示例展示了如何启用HTTP/2和HTTPS,以提升Web应用的性能和安全性。
33 3
|
13天前
|
设计模式 开发者 Python
Python编程中的设计模式应用与实践感悟####
本文作为一篇技术性文章,旨在深入探讨Python编程中设计模式的应用价值与实践心得。在快速迭代的软件开发领域,设计模式如同导航灯塔,指引开发者构建高效、可维护的软件架构。本文将通过具体案例,展现设计模式如何在实际项目中解决复杂问题,提升代码质量,并分享个人在实践过程中的体会与感悟。 ####
|
1月前
|
前端开发 JavaScript 数据可视化
前端自动化测试:Jest与Cypress的实战应用与最佳实践
【10月更文挑战第26天】前端自动化测试在现代软件开发中至关重要,Jest和Cypress分别是单元测试和端到端测试的流行工具。本文通过解答一系列问题,介绍Jest与Cypress的实战应用与最佳实践,帮助开发者提高测试效率和代码质量。
34 2
|
1月前
|
前端开发 JavaScript API
前端框架新探索:Svelte在构建高性能Web应用中的优势
【10月更文挑战第26天】近年来,前端技术飞速发展,Svelte凭借独特的编译时优化和简洁的API设计,成为构建高性能Web应用的优选。本文介绍Svelte的特点和优势,包括编译而非虚拟DOM、组件化开发、状态管理及响应式更新机制,并通过示例代码展示其使用方法。
46 2
|
1月前
|
设计模式 安全 Java
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式
Kotlin教程笔记(51) - 改良设计模式 - 构建者模式