js 代理模式妙用 —— 优化大图加载时用户体验

简介: 笔记

什么是代理模式



代理模式是为一个对象提供一个代用品或占位符,以便控制对它的访问。举个例子:明星与经纪人的关系,明星是请求的本体,经纪人就是代理proxy


如何实现代理模式



代理对象内部含有对本体对象的引用,因而可以与调用本体的相关方法;同时,代理对象提供与本体对象相同的接口,方便在任何时刻代理本体对象。


代理模式经典的应用场景 —— 大图加载缓冲



大家都应该经历过这种情况:网页内加载图片的时候(无论是手机端还是PC端),当网络情况不佳或是图片过大时,就会出现图片一截一截的慢慢出现,如图:6.png

这就产生了非常不友好的体验,卡顿不流畅,会让我们可爱的宝贝用户感觉到很焦虑。

这个时候就可以用到 js的代理模式,图片没有加载完成的时候,干脆就不让用户看到,给一个可爱的loading动画先看着,缓解一下用户无聊的枯燥的心情:


html 部分


<!DOCTYPE html>
<html>
    <body>
         <div class="img-con">
            <img  class="img2" src="" height="540"/>
        </div>
        <button class="btn1">请求图片</button>
    </body>
</html>


js 部分


var btn1 = document.querySelector(".btn1");
            btn1.onclick = function(){
                var myImage = (function(){
                    var imgNode = document.querySelector(".img2");
                    return {
                        setSrc: function(src){
                            imgNode.src = src;
                        }
                    }
                })();
                // 兼顾了图片的载入时间
                // 图片没加载好 显示loading动作
                var proxyImage = (function(){
                    // 无ajax请求图片
                    var img = new Image;
                    img.onload = function(){
                        myImage.setSrc(this.src)
                    }
                    return{
                        setSrc: function(src){
                            // loading动画 加载时显示
                            myImage.setSrc('./img/timg.gif');
                            img.src = src;
                        } 
                    }
                })();
                // 大图文件
                proxyImage.setSrc('./img/img25418.jpg');
            }

结语


如果本文有错误,敬请指出。

目录
相关文章
|
2月前
|
存储 缓存 JavaScript
如何优化Node.js应用的内存使用以提高性能?
通过以上多种方法的综合运用,可以有效地优化 Node.js 应用的内存使用,提高性能,提升用户体验。同时,不断关注内存管理的最新技术和最佳实践,持续改进应用的性能表现。
129 62
|
2月前
|
JavaScript 前端开发
如何使用时间切片来优化JavaScript动画的性能?
如何使用时间切片来优化JavaScript动画的性能?
|
2月前
|
存储 缓存 监控
如何使用内存监控工具来优化 Node.js 应用的性能
需要注意的是,不同的内存监控工具可能具有不同的功能和特点,在使用时需要根据具体工具的要求和操作指南进行正确使用和分析。
77 31
|
2月前
|
缓存 前端开发 JavaScript
JavaScript加载优化
JavaScript加载优化
|
2月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
优化CSS和JavaScript加载
|
2月前
|
缓存 JavaScript 前端开发
介绍一下 JavaScript 中数组方法的常见优化技巧
通过合理运用这些优化技巧,可以提高 JavaScript 中数组方法的执行效率,提升代码的整体性能。在实际开发中,需要根据具体的业务场景和数据特点选择合适的优化方法。
40 6
|
2月前
|
缓存 前端开发 JavaScript
优化CSS和JavaScript加载
Next.js和Nuxt.js在优化CSS和JavaScript加载方面提供了多种策略和工具。Next.js通过代码拆分、图片优化和特定的CSS/JavaScript优化措施提升性能;Nuxt.js则通过代码分割、懒加载、预渲染静态页面、Webpack配置和服务端缓存来实现优化。两者均能有效提高应用性能。
|
Web App开发 存储 缓存
前端网络、JavaScript优化以及开发小技巧
YSlow有23条规则,中文可以参考这里。这几十条规则最主要是在做消除或减少不必要的网络延迟,将需要传输的数据压缩至最少。
前端网络、JavaScript优化以及开发小技巧
|
2月前
|
JavaScript 前端开发
JavaScript中的原型 保姆级文章一文搞懂
本文详细解析了JavaScript中的原型概念,从构造函数、原型对象、`__proto__`属性、`constructor`属性到原型链,层层递进地解释了JavaScript如何通过原型实现继承机制。适合初学者深入理解JS面向对象编程的核心原理。
36 1
JavaScript中的原型 保姆级文章一文搞懂