`
bolinyang
  • 浏览: 75353 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

前端自定义事件的编程基础

阅读更多
一.概述

    在进行前端开发的时候,如果出现模块与模块之间的通信,我们把这两个模块简称为A和B,我们设想一下A和B通信的条件是,A首先告诉B说要通信,然后A在传递一些数据给B,在前端B没有必要给A一个收到数据的反馈。在这里可以进行这样的设计,A模块中触发一个事件,B模块中注册同样一个事件,这样一旦在B中注册的事件被触发,B就能感知到这个事件并且接收到相关的数据。当然一个事件可以被触发多次注册多次,一次触发,多次注册都会响应。其实这里的事件和前端的一些标准事件的概念是一样的,例如要想在前端响应某个按钮的点击事件,我们可以注册一个click事件,同时编写自己的事件处理函数就好了。如果注册了多个click事件,点击按钮之后这多个click事件都会被触发,即所谓的事件冒泡思想。

二.简单代码测试
event-center.js
/**
 * author:yangbolin
 * desc:事件中心
 * date:2013-02-18
 */
var YBL = new Object();
(function($, app){
	YBL.EVENT = {
		host:$('<div/>'),		//其实就是一个jQuery元素,自定义的事件都可以往这个元素上面注册
		pub:function(eType, data) {
			// 手动触发一个事件
			this.host.trigger(eType, data);
		}
	}
})(jQuery);

reg-trigger.js
/**
 * author:yangbolin
 * date: 2013-02-28 
 * desc: 事件测试
 */
jQuery(function($){
	var E = YBL.EVENT,
		host = E.host;
		
	var mod = {
		init:function() {
			this.computeScore();
			this.computeLevel();
			this.start();
		},
		start:function() {
			var data = {
				score:1,
				level:2
			}
			E.pub("RUN", data);// RUN事件的触发
		},
		/** RUN事件一旦触发就计算分数 **/
		computeScore:function(){
			host.on("RUN", function(e, data){ //注册RUN事件
				console.log("compute score " + data.score);
			});
		},
		/** RUN事件一旦触发就计算级别 **/
		computeLevel:function() {
			host.on("RUN", function(e, data){
				console.log("compute level " + data.level);
			});
		},
	}
	mod.init();
});

test.html
<script src=".../jquery/jquery.js"></script>
<script src="event-center.js"></script>
<script src="reg-trigger.js"></script>


运行结果如下:
compute score 1
compute level 2

三.总结

利用事件进行通信的确可以使得模块与模块之间的耦合度降低,特别是一个模块要和多个模块进行通信的时候,这种事件的设计理念就会变得很重要。同时我们学过设计模式的话,观察者设计模式相信大家都不陌生吧,这里的事件机制其实就是所谓的观察者设计模式,事件的注册犹如观察者的注册,事件的触发犹如观察者的notify等等。
分享到:
评论

相关推荐

    自定义的一个前端结构

    【标题】: "自定义前端架构实践" 在前端开发领域,构建一个高效、可维护的项目结构至关重要。这里我们探讨的“自定义的一个前端结构”是基于RequireJS、Backbone.js、Underscore.js和Jasmine的一套组合,旨在提供一...

    自定义事件选择器

    总之,自定义时间选择器的设计和实现是一个综合性的任务,涉及UI设计、前端技术、交互逻辑等多个方面。开发者需要根据项目需求,选择合适的工具和技术,创建出符合用户体验、高效且易用的自定义时间选择器。在实践中...

    利用javascript和jxl实现自定义报表的输出

    它支持事件驱动、函数式以及基于原型的编程风格。在本案例中,JavaScript将用于处理用户输入、数据操作以及与服务器的通信。 接着,我们要学习JXL库。JXL是一个开源的Java库,允许开发者读取、写入和修改Excel文件...

    高效前端:Web高效编程与优化实践_机械工业出版社; 第1版 (2018年1月1日) 完整版-未加密

    327Effective前端30:使用响应式开发 336Effective前端31:明白移动端click及自定义事件 344Effective前端32:学习JS高级技巧 355第7章 运用恰当的工具 372Effective前端33:前端的单元测试与自动化测试 372...

    JQuery自定义事件的应用 JQuery最佳实践

    JQuery作为流行的JavaScript库,支持开发者使用自定义事件模型来进行更高效和组织更清晰的前端编程。自定义事件在JQuery中的应用是其一个重要组成部分,为面向对象编程提供了强大的工具。在本文中,我们将详细讨论...

    安卓手绘图片处理画板相关-自定义控件-颜色取色器.rar

    由于压缩包中可能包含的源代码可能需要进一步调试和适配,因此,开发者需要具备一定的安卓开发基础,熟悉Android Studio环境,以及XML布局和Java或Kotlin编程。此外,对于初学者,可以参考提供的代码进行学习,理解...

    前端面试题基础篇293题

    第二部分CSS,第三部分JavaScript,第四部分Jquery,第五部分Bootstrap,第六部分微信小程序,第七部分webpack,第八部分常用编程题,第九部分其他常问内容如负载均衡、CDN、内存泄露、babel原理、js自定义事件等,...

    自定义表单的实现源代码

    总的来说,自定义表单的实现涉及前端和后端多个技术层面,包括HTML、CSS、JavaScript、服务器端编程以及可能的数据库操作。通过深入研究提供的源代码,你可以掌握这些技能,从而设计出更加灵活、功能丰富的自定义...

    asp自定义表单,使用户可以自定义数据模型

    为了实现以上功能,我们需要掌握ASP的编程基础,包括VBScript或JScript脚本语言,理解ASP内置对象如Request、Response、Session等的使用,以及SQL语句来操作数据库。此外,对于HTML、CSS和JavaScript的熟练掌握也是...

    Node.js-一个事件总线框架用于事件驱动编程

    然而,这里提到的是在 Node.js 环境下使用事件总线框架进行事件驱动编程,这可能涉及到自定义实现或使用特定的库,如 `eventemitter3` 或 `busboy`。 在 Node.js 中,内置的 `events` 模块提供了 EventEmitter 类,...

    c# 拖动控件的大小、移动、扩大和缩小控件

    在此基础上,可以覆盖或扩展默认的事件处理程序,实现所需的功能。 6. **布局管理**: 在某些情况下,我们可能希望控件自动适应窗口的变化或保持特定的相对位置。这时,可以使用`TableLayoutPanel`、`...

    js 自定义提示框

    在JavaScript编程中,自定义提示框是常见的需求,特别是在网页应用和交互设计中。...在具体实现过程中,关键在于理解DOM操作、事件处理以及如何通过CSS实现动态效果,这些都是JavaScript前端开发的基础知识。

    amis低代码前端框架,它使用 JSON 配置来生成页面

    低代码开发平台(Low-Code Development Platform)旨在减少编写传统编程语言的需求,通过图形化界面和简单的编码方式实现应用的快速构建。Amis 正是这样一种工具,它允许开发者使用 JSON 来描述页面结构、样式、交互...

    微信朋友圈广告自定义详情页前端库

    微信朋友圈广告自定义详情页前端库是专门为在微信朋友圈展示广告时创建个性化、交互性强的详情页面而设计的工具。这个库通常基于JavaScript,利用微信的JS-SDK(JavaScript SDK)来实现与微信平台的深度集成,以提供...

    C#完全自定义报表源码

    为了理解和使用这个源码,开发者需要具备C#编程基础,了解.NET框架,熟悉数据库操作,并可能需要阅读和理解代码结构。 总的来说,C#完全自定义报表源码涉及的内容广泛,涵盖了数据处理、UI设计、服务构建等多个领域...

    JS锁屏弹框代码,可以自定义弹框透明度,自定义弹框时间长,自定义弹框内容

    总的来说,掌握如何使用纯JS编写锁屏弹框是前端开发中的基础技能,通过灵活运用透明度、时间及内容的自定义,可以创建出符合不同场景需求的弹框效果。通过不断实践和学习,你将在JS弹框设计方面变得更加熟练。

    自定义通用分页控件案例

    总的来说,自定义通用分页控件的开发是一个综合性的任务,涵盖了前端界面设计、后端数据处理、事件机制和用户体验等多个方面。通过这样的实践,开发者不仅可以提升C#编程技能,也能更好地理解和掌握网页开发中的控件...

    自定义tabbar_微信小程序模板js代码前台前端H5页面源码.rar

    在自定义TabBar的场景中,开发者可能需要编写JavaScript代码来控制TabBar的切换效果、事件监听以及与其他组件的交互。 4. **前端开发**:这部分源码涉及到前端技术,包括HTML、CSS和JavaScript,它们共同构建了用户...

    自定义U站模板

    1. **前端技术**:HTML、CSS和JavaScript是构建U站页面的基础,它们用于实现页面布局、样式设计和交互效果。可能还会用到React、Vue等前端框架,以提高开发效率和页面性能。 2. **后端技术**:如果自定义U站需要...

    自定义页面分页标签自定义页面分页标签

    总的来说,自定义页面分页标签涉及到前端界面设计、交互逻辑、后端接口设计等多个方面,是提高用户体验和网站性能的重要手段。掌握这些知识点,可以帮助开发者构建高效、美观且易于使用的分页功能。

Global site tag (gtag.js) - Google Analytics