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');
            }

结语


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

目录
相关文章
|
19天前
|
缓存 JavaScript 前端开发
高效打造跨平台桌面应用:Electron加载服务器端JS
【9月更文挑战第17天】Electron 是一个基于 Chromium 和 Node.js 的开源框架,允许使用 HTML、CSS 和 JavaScript 构建跨平台桌面应用。加载服务器端 JS 可增强应用灵活性,实现代码复用、动态更新及实时通信。通过 HTTP 请求、WebSocket 或文件系统可实现加载,但需注意安全性、性能和兼容性问题。开发者应根据需求选择合适方法并谨慎实施。
|
11天前
|
存储 缓存 JavaScript
JavaScript 中数组方法的常见优化技巧
JavaScript 中数组方法的常见优化技巧
|
25天前
|
缓存 JavaScript 中间件
优化Express.js应用程序性能:缓存策略、请求压缩和路由匹配
在开发Express.js应用时,采用合理的缓存策略、请求压缩及优化路由匹配可大幅提升性能。本文介绍如何利用`express.static`实现缓存、`compression`中间件压缩响应数据,并通过精确匹配、模块化路由及参数化路由提高路由处理效率,从而打造高效应用。
71 6
|
2月前
|
C# 开发者 测试技术
震惊!Xamarin 竟能如此构建跨平台应用程序,代码共享、界面设计与性能优化全攻略大揭秘!
【8月更文挑战第31天】在移动应用开发领域,跨平台工具日益受到青睐。Xamarin 是一款强大的工具,支持使用 C# 开发适用于 iOS、Android 和 Windows 的应用。通过安装 Visual Studio 或 Visual Studio for Mac,并创建 Xamarin 项目,开发者可以利用丰富的功能和工具进行开发。Xamarin 的主要优势在于代码共享,能够显著提高开发效率。
53 0
|
2月前
|
API UED 开发者
如何在Uno Platform中轻松实现流畅动画效果——从基础到优化,全方位打造用户友好的动态交互体验!
【8月更文挑战第31天】在开发跨平台应用时,确保用户界面流畅且具吸引力至关重要。Uno Platform 作为多端统一的开发框架,不仅支持跨系统应用开发,还能通过优化实现流畅动画,增强用户体验。本文探讨了Uno Platform中实现流畅动画的多个方面,包括动画基础、性能优化、实践技巧及问题排查,帮助开发者掌握具体优化策略,提升应用质量与用户满意度。通过合理利用故事板、减少布局复杂性、使用硬件加速等技术,结合异步方法与预设缓存技巧,开发者能够创建美观且流畅的动画效果。
61 0
|
2月前
|
JavaScript 前端开发 应用服务中间件
Vue.js项目部署与优化:一场从本地到生产环境的华丽蜕变,见证你的应用如何凤凰涅槃,惊艳上线!
【8月更文挑战第30天】作为一名前端开发者,掌握从本地开发环境到生产环境的迁移至关重要。本文将带你了解如何使用 Vue.js 构建和打包应用,确保其在生产环境中流畅运行。首先,通过 `npm run build` 或 `yarn build` 命令生成生产环境文件;接着,配置服务器(如 Nginx)以支持静态文件服务;最后,通过代码分割、资源压缩、CDN 使用、服务端渲染及缓存策略等手段优化应用性能。跟随本文,你将学会如何让 Vue.js 应用在真实环境中表现优异,为用户提供流畅体验。
41 0
|
2月前
|
前端开发 JavaScript Linux
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
【Azure 应用服务】在Azure App Service for Linux环境中,部署的Django应用,出现加载css、js等静态资源文件失败
|
2月前
|
JavaScript 前端开发
JavaScript引入全攻略:提升网页加载速度的秘诀!
JavaScript引入全攻略:提升网页加载速度的秘诀!
|
2月前
|
资源调度 JavaScript 前端开发
如何大幅减少 Vue.js 中的包大小和加载时间,提升用户体验!
如何大幅减少 Vue.js 中的包大小和加载时间,提升用户体验!
|
3月前
|
JavaScript Java 测试技术
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
基于springboot+vue.js+uniapp的客户关系管理系统附带文章源码部署视频讲解等
78 2