`
JerryWang_SAP
  • 浏览: 1033057 次
  • 性别: Icon_minigender_1
  • 来自: 成都
文章分类
社区版块
存档分类
最新评论

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

阅读更多

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

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

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

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

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

有一个按钮。点了之后,会触发一张大尺寸图片的加载。

 

在这张图片的加载过程中,一直显示一张本地的gif图片作为加载动画:

 

加载完毕后,动画消失,实际图片才显示出来(4.1MB大)。

 

项目完整代码在我github上:

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

看一些关键步骤。

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

id为jerryButton的button控件,点击事件处理函数onPress:

 

2. 再看控制器的代码:onPress执行loadImageWithProxy。

 

loadImageWithProxy调用injectProxy,传入的输入参数image就是XML视图里定义的Image控件。

 

在injectProxy里,代码第30行创建了一个隐藏的Image代理对象,然后在第36行用真实的Image控件去显示本地的gif文件,以在UI上显示出动画效果,然后第37行用隐藏的Image代理对象去悄悄地加载大尺寸文件,这件事情终端用户并不知情。等到这个大尺寸图片加载完毕后,Image代理对象的onload回调函数会被浏览器触发,此时再让真实的Image控件把加载好的大尺寸文件显示出来。 效果就实现了。

分享到:
评论

相关推荐

    C++设计模式(Design Pattern)范例源代码

    23种设计模式(Design Pattern)的C++实现范例,包括下面列出的各种模式,代码包含较详细注释。另外附上“设计模式迷你手册.chm”供参考。 注:项目在 VS2008 下使用。 创建型: 抽象工厂模式(Abstract Factory) 生成...

    java设计模式详解,java design pattern

    Java设计模式详解涉及到23种设计模式,这些设计模式可以根据其目的和范围被划分为三大类:创建型模式(Creational Patterns)、结构型模式(Structural Patterns)和行为型模式(Behavioral Patterns)。下面将详细...

    设计模式源码Head_First_DesignPattern_src

    在本文中,我们将深入探讨设计模式的核心概念,并结合"Head First DesignPattern_src"中的源码,详细解析一些关键的设计模式。 1. 单例模式(Singleton): 单例模式确保一个类只有一个实例,并提供全局访问点。在...

    设计模式 - Design Pattern

    "Design Pattern"这个压缩包文件很可能包含了一些关于设计模式的实例和文档,特别是提到了"design-pattern\doc\api"目录下的"index.html",这可能是一个交互式的文档或者教程,通过实例帮助开发者更好地理解设计模式...

    Design*Pattern*Framework*4.5

    "Design*Pattern*Framework*4.5" 可能指的是一个基于 .NET Framework 4.5 的设计模式实现或教程集合。 设计模式是经验丰富的软件开发者的智慧结晶,它们被分为三类:创建型、结构型和行为型。创建型模式涉及对象的...

    设计模式 design pattern

    在`java-design-patterns-master`这个压缩包中,很可能包含了一个Java实现的各种设计模式的项目。这些代码示例可以帮助开发者更好地理解和应用设计模式,通过具体的代码结构图,可以更直观地看到不同模式在实际编程...

    design pattern设计模式范例

    本资料库中的"design pattern设计模式范例"提供了23种经典设计模式以及最新的范式用法,非常适合用于项目重构或作为学习设计模式的参考。 首先,我们来看23种经典的设计模式,它们通常分为三类:创建型、结构型和...

    JAVA design pattern-java设计模式

    在这个名为"JAVA design pattern-java设计模式"的CHM文件中,我们可能找到了关于如何在Java开发中应用设计模式的详细信息。 设计模式通常分为三大类:创建型、结构型和行为型。创建型模式关注对象的创建,如单例...

    designpattern.zip

    本资源"designpattern.zip"包含了对Java中23种经典设计模式的详细讲解和代码实例,对于中高级Java工程师来说,是提升开发技能的必备学习材料。 设计模式通常分为创建型、结构型和行为型三大类。创建型设计模式关注...

    JAVA 23种设计模式(全).Design Pattern_Java模式

    本资料包“JAVA 23种设计模式(全).Design Pattern_Java模式”涵盖了所有23种经典的GOF(GoF,Gang of Four)设计模式,旨在帮助开发者深入理解和应用这些模式。 首先,我们来看一下23种设计模式的分类: 1. **创建...

    设计模式(Design Patterns).pdf

    设计模式是软件开发中用来解决特定问题的一套经验总结,被广泛应用于软件设计中,以增强软件的可复用性、可维护性和可扩展性。本知识点将详细介绍设计模式的分类、设计模式的六大原则,以及Java中23种设计模式的具体...

    Design Pattern(设计模式)讲义

    ### Design Pattern(设计模式)讲义 #### 一、引言 设计模式是软件工程领域的一个重要主题,它提供了一套解决常见问题的方案。侯捷老师的讲义为我们揭示了设计模式背后的原理与实践方法。这份讲义不仅包含了GoF...

    Design Pattern英文版

    设计模式(Design Pattern)是软件工程中的一种经验总结,它是在特定上下文中为解决常见问题而提出的一套可复用的解决方案。设计模式并不直接实现为代码,而是提供了一种在面向对象设计中如何处理常见问题的指南。...

    23种设计模式实现designpattern书籍代码的重写Java版

    本资源提供了《设计模式:可复用面向对象软件的基础》(GOF设计模式)书籍中23种设计模式的Java实现重写版本。下面将对这23种设计模式进行详细解释,并结合提供的文件名来推测每种模式的示例应用。 1. **单例模式...

    Head First Design Pattern

    2. 结构型设计模式:包括适配器模式(Adapter)、装饰器模式(Decorator)、代理模式(Proxy)、桥接模式(Bridge)、组合模式(Composite)、外观模式(Facade)和享元模式(Flyweight)。这些模式关注如何将类和...

    设计模式与重构(design pattern )

    设计模式与重构是软件开发中的两个重要概念,它们在提高代码质量、可维护性和扩展性方面发挥着关键作用。设计模式是经验丰富的开发者们在解决常见问题时总结出的最佳实践,而重构则是在不改变软件外部行为的前提下,...

    Software Architecture Design Pattern In Java

    3. **促进团队协作**:设计模式是软件开发领域的通用语言,使用设计模式可以降低沟通成本,提高团队协作效率。 4. **提升开发效率**:熟练掌握设计模式后,可以在遇到相似问题时快速找到解决方案,从而提高开发效率...

    DesignPattern_设计模式c++_

    本资源"DesignPattern_设计模式c++_"是一个关于C++设计模式的简单实现集合,适合初学者作为入门教程来学习。 1. **单例模式(Singleton)**:保证一个类只有一个实例,并提供全局访问点。在C++中,通常通过私有化...

Global site tag (gtag.js) - Google Analytics