巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验

简介: 巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验

这篇文章介绍一种使用代理设计模式(Proxy Design Pattern)的方法来改善您的前端应用里图片加载的体验。


假设我们的应用里需要显示一张尺寸很大的图片,位于远端服务器。我们用一些前端框架的Image这个控件类去显示图片。如果直接调用控件类的代码


image.setSrc(“http://www.bigfile.gif”), 那么在这张具体的图片真正加载到本地之前,UI上显示一片空白,这个用户体验不好。


我们日常生活中其实已经能感觉到,很多优秀的前端应用,在加载大尺寸图片或者执行其他费时的后台操作时,前台都会有一些动画效果。


今天我们就来动手做一个类似的效果出来。


有一个按钮。点了之后,会触发一张大尺寸图片的加载。image.png在这张图片的加载过程中,一直显示一张本地的gif图片作为加载动画:image.png加载完毕后,动画消失,实际图片才显示出来(4.1MB大)image.png项目完整代码在我github上:


https://github.com/i042416/FioriODataTestTool2014/tree/master/WebContent/buttontutorial/view


看一些关键步骤。


1. Image控件定义在XML视图里,ID为jerryImage。我用的SAP UI5前端框架。大家只要领会了思路,可以容易地迁移到其他任何前端框架去。


id为jerryButton的button控件,点击事件处理函数onPress:image.png. 再看控制器的代码:onPress执行loadImageWithProxy。image.pngoadImageWithProxy调用injectProxy,传入的输入参数image就是XML视图里定义的Image控件。image.png在injectProxy里,代码第30行创建了一个隐藏的Image代理对象,然后在第36行用真实的Image控件去显示本地的gif文件,以在UI上显示出动画效果,然后第37行用隐藏的Image代理对象去悄悄地加载大尺寸文件,这件事情终端用户并不知情。等到这个大尺寸图片加载完毕后,Image代理对象的onload回调函数会被浏览器触发,此时再让真实的Image控件把加载好的大尺寸文件显示出来。 效果就实现了。



相关文章
|
6月前
|
设计模式 缓存
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
二十三种设计模式全面解析-代理模式(Proxy Pattern)详解:探索隐藏于背后的力量
453 0
|
3月前
|
前端开发 测试技术 UED
React性能优化的神奇之处:如何用懒加载与代码分割让你的项目一鸣惊人?
【8月更文挑战第31天】在现代Web开发中,性能优化至关重要。本文探讨了React中的懒加载与代码分割技术,通过示例展示了如何在实际项目中应用这些技术。懒加载能够延迟加载组件,提高页面加载速度;代码分割则将应用程序代码分割成多个块,按需加载。两者结合使用,可以显著提升用户体验。遵循合理使用懒加载、编写测试及关注性能等最佳实践,能够更高效地进行性能优化,提升应用程序的整体表现。随着React生态的发展,懒加载与代码分割技术将在未来Web开发中发挥更大作用。
44 0
|
3月前
|
缓存 前端开发 开发者
动态样式问题之@ant-design/cssinjs优化性能如何解决
动态样式问题之@ant-design/cssinjs优化性能如何解决
|
4月前
|
数据库 SEO
做好网站URL结构优化,让SEO事半功倍
许多网站管理员经常错过URL结构的优化,但拥有一个好的URL不仅可以改善用户访问体验,
52 3
|
6月前
|
Web App开发 前端开发 JavaScript
Chrome 扩展 AdBlock 的 hide something on this page 背后的工作原理
Chrome 扩展 AdBlock 的 hide something on this page 背后的工作原理
|
6月前
|
前端开发 搜索推荐 UED
单页面应用(SPA)与多页面应用(MPA)的区别及优缺点
单页面应用(SPA)与多页面应用(MPA)的区别及优缺点
200 1
|
JavaScript Apache 开发者
通过 express 模拟 Apache 实现静态资源托管服务(补充)|学习笔记
快速学习通过 express 模拟 Apache 实现静态资源托管服务(补充)
133 0
|
JavaScript
移动适配(引入js知识)
移动适配(引入js知识)
61 0
|
设计模式 XML 前端开发
巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验
巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验
172 0
巧用代理设计模式(Proxy Design Pattern)改善前端图片加载体验