`
子衿青青
  • 浏览: 110916 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

dojo的connect方法使用与源代码剖析(在JavaScript里实现类似AOP的效果)

 
阅读更多

该文最早发表于ITEYE博客,原文地址

作者:张卫滨(微博),感谢dojo中文博客原创和翻译了大量的精品文章,个人愿意借此平台与所有关注RIA技术的朋友交流。

dojo是功能非常强大的JavaScript类库,论类库本身的功能,丝毫不逊色于jQuery,但是jQuery的轻量级和丰富的插件使其在互联网领域风生水起,知名度要高得多。dojo也提供了自己的UI组件库,名为dijit,它们拥有统一的生命周期,性能也相当不错。dojo这几年也得到了很多大公司的支持,并应用于很多领域,比如struts2就使用了它,通过研究dojo的使用方式和源码对提升前台的开发能力大有益处。

dojo实现了强大的类继承机制,并对常用的前台功能进行了很多封装,使得我们在进行开发时不必费工夫去直接接触HTML和CSS的一些用法,所以也就避免了一些浏览器兼容性的问题。

在本文中,将会介绍一个dojo提供的很有用的功能,使用这个功能一方面能够实现对dom元素事件的统一方式处理,另一方面还能够实现类似于Java中AOP的效果:在一个方法调用之后,执行另外的一系列方法。这个功能就是dojo的connect方法。

场景一:我有一个按钮,想在点击按钮的时候,触发一些事件处理

这样的场景,通过标准的javascript和html编码,也能很容易的实现,但是通过使用dojo提供的connect方法,将会使你的处理更轻松。


以上为一个按钮的定义,事件绑定和处理怎么写呢?


通过这么简单的配置,当你再次点击这个按钮的时候,test方法就会被调用了

场景二:我有一个方法名为test,我想在这个方法被执行的时候,另外一个方法test2也能被执行:

普通情况下,需要在test里面写上test2();这样这两个方法就紧密耦合在一起了。通过使用dojo的connect方法,可以很方便的实现该要求:

(关于dojo的connect方法的进一步使用可以参照以下文章:http://blog.csdn.net/dojotoolkit/article/details/6526897

那么这个功能是怎么实现的呢?看一下dojo.connect的源码吧,这部分的实现是通过connect.js实现的:


通过以上的代码分析,可以了解到dojo实现该功能的核心思想是将原有的方法进行了替换,在新的方法中记录了原方法以及要添加的其他方法,在执行时,依次执行,实现的确实很高明。借助这个方法,dojo还实现了subscribe和publish功能,感兴趣的朋友可以进一步的研究。

分享到:
评论

相关推荐

    Dojo权威指南源代码

    5. **dojo/aspect**:面向切面编程(AOP)模块,用于在方法调用前、后或异常时插入额外的行为,这对于日志记录、性能分析等非常有用。 6. **dojo/store和dojo/data**:Dojo的数据存储接口和数据模型,用于与服务器...

    DOJO源代码

    **DOJO 源代码详解** ...通过深入学习和分析这个压缩包中的源代码和示例,你不仅可以掌握 Dojo 的基本用法,还能理解其设计哲学和内部工作机制,从而在实际项目中更好地利用 Dojo 这个强大的工具。

    精通dojo 代码 javascript库

    在AJAX方面,Dojo提供了xhr模块,通过dojo.xhrGet、dojo.xhrPost等方法,可以轻松地与服务器进行数据交互。同时,Dojo还支持JSONP和CORS,方便跨域请求。 JavaScript是Dojo的基础,理解JavaScript的高级特性对于...

    AJAX DOJO0.3 源代码

    **AJAX DOJO 0.3 源代码解析** AJAX(Asynchronous JavaScript and XML)是一种在不刷新整个页面的情况下,与服务器交换数据并更新部分网页的技术。Dojo Toolkit 是一个强大的JavaScript库,它提供了AJAX功能以及...

    dojo官网的源码dojo官网的源码

    9. **主题和CSS**:Dojo有多个预设的主题,如 claro、tundra、soria 和 nihilo,它们通过`dojo/themes`实现,与`dijit/themes`配合使用,可以快速改变应用的外观。 10. **UI组件(Dijit)**:`dijit`是Dojo的UI组件...

    dojo常用方法总结

    ### Dojo常用方法总结 Dojo是一个开源的JavaScript框架,用于构建高性能的富客户端Web应用程序。它提供了一系列功能强大的工具和API,可以帮助开发者更轻松地处理DOM操作、AJAX调用、用户界面组件构建等任务。本文...

    dojo1.1 javascript框架

    1. **模块化**:Dojo使用了AMD(Asynchronous Module Definition)模块加载机制,允许开发者按需加载JavaScript模块,减少页面加载时间,提高性能。通过`require`和`define`函数,开发者可以组织代码,实现模块间的...

    DOjo中文使用手册

    DOjo提供了三种安装方式:使用美国在线(AOL)的内容分发网络(CDN),在本地使用稳定版本,和从DOjo网站的SVN服务器上获取最新代码。使用CDN上的DOjo非常快捷,用户只需添加一个script标签到HTML文件中就可以使用...

    dojo中文文档-dojo手册

    在数据交互方面,Dojo的dojo.xhr系列函数(如dojo.xhrGet、xhrPost)实现了与服务器的异步通信,支持JSON、XML等多种数据格式。另外,dojo.data API则提供了一种统一的方式来存储和检索数据,无论数据源是本地还是...

    javascript dojo

    学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源学习dojo的绝好资源...

    dojo dojo实例 dojo例子 dojo资料 dojo项目 dojo实战 dojo模块 dojo编程

    7. **dojo/aspect**:提供面向切面编程(AOP)的支持,允许在方法调用前、后或替代方法执行插入额外的功能。 8. **dojo/data**:提供了一种数据模型接口,用于与各种数据源进行交互,比如从服务器获取数据。 9. **...

    dojo JavaScript框架 Ajax学习

    在实际应用中,dojo的`dijit`模块提供了一整套用户界面(UI)组件,如按钮、表单、表格等,这些组件与Ajax结合使用,可以实现动态更新内容。比如,你可以使用`dijit.form.Button`配合xhr请求,实现点击按钮时向...

    dojo是JavaScript语言实现的开源DHTML工具

    Dojo是一个用JavaScript语言实现的开源DHTML工具包。它是在几个项目捐助基础上建立起来的(nWidgets, Burstlib, f(m)),这也是为什么叫它a unified toolkit的原因。Dojo的目标是解决开发DHTML应用程序遇到的那些、...

    ArcGIS API for JavaScript 开发教程+DOJO指南+配置教程

    《ArcGIS API for JavaScript开发教程+DOJO指南+配置教程》是一份专为开发者准备的综合资源,旨在帮助他们熟练掌握使用ArcGIS API for JavaScript进行Web GIS应用开发,并结合DOJO框架进行高效编程。这份教程特别...

    Mastering Dojo-JavaScript and Ajax Tools for Great Web Experiences

    ### Dojo:JavaScript与Ajax工具掌握指南 #### 一、Dojo概述 Dojo是一个功能强大的JavaScript库,它提供了一套完整的工具集用于构建高性能、跨平台的富互联网应用程序(RIA)。通过结合JavaScript和Ajax技术,Dojo...

    DOJO权威指南+DOJO1.1源码

    - **dojo/aspect**: 实现AOP(面向切面编程),提供方法的前置、后置、环绕和异常处理等通知功能。 - **dojo/store**: 用于管理数据存储,可以与各种数据源(如JSON、XML、Ajax等)交互。 4. **DOJO的UI组件...

    dojo例子 各方法的用法

    在这个"dojo例子 各方法的用法"的压缩包中,我们很可能会找到关于如何使用Dojo库的各种示例,包括"HelloWorld"这样的基础入门教程以及其他复杂功能的演示。 首先,让我们了解一下Dojo的核心概念。Dojo的基础模块`...

    dojo-release-1.9.0-src.zip dojo javascript库源码

    Dojo 是一个强大的JavaScript工具包,它为Web开发提供了丰富的功能和组件,包括DOM操作、事件处理、Ajax交互、动画效果、模块化编程等。在"dojo-release-1.9.0-src.zip"这个压缩包中,我们获取的是Dojo 1.9.0版本的...

    dojo事件处理框架

    使用`dojo.event.disconnect()`方法可以取消事件处理函数的绑定,参数与`connect`方法相同,从而断开事件监听器。 4. **关键字绑定(kwConnect)**: Dojo提供了`dojo.event.kwConnect()`方法进行关键字绑定,它...

    Dojo工具包javascript

    【Dojo工具包JavaScript】是JavaScript开发领域中的一个重要框架,尤其在Web应用程序的构建上具有广泛的应用。这个0.40版本的教程以其独特的中文资源,为中文开发者提供了宝贵的参考资料,帮助他们更好地理解和掌握...

Global site tag (gtag.js) - Google Analytics