基于jQuery建立前端消息框架
来源:互联网 发布:jquery.min.js的作用 编辑:程序博客网 时间:2024/06/06 17:11
最开始设计一个模块时,觉得这个模块特别适合观察者模式,遂就在模块中大量使用这种模式。不过,这种实践很快遇到了新问题,当模块复杂到一定程度的时间,发现每次建立观察者关系,都要引入被观察者模块,强迫地让观察者感知到有这样一个比较大的被观察者存在!这样的编程约束,对于明显没有太多联系、距离较远的模块或被观察者与系统内其他模块有比较普遍联系,就带来了引入模块强迫,不够自由!
因为现在的前端应用,基本上构建于jQuery之上,我们就想到了,是否可以借用jQuery里面的off/on的事件机制,进行各前端组件间的发消息呢?!
进一步的深究,第二次燃起了我们的惊讶。因为,我们最初的方案通过jQuery生成一个空的HTML DIV对象进行消息的on/off/trigger操作;而同事在网上翻阅、参考了其它文章后,发现在jQuery体系内有更好的消息框架代码。
/**
* jquery观察者模式消息框架
*/
(function ($) {
/*闭包内对象,屏蔽外界访问;利用空对象作为jQuery入参,可以仅构造一个与HTML无关的jQuery轻量级对象,但这已经足够使用到jQuery的消息框架了*/
var o = $({});
/*扩展jQuery方法。方法名借用常用的订阅机制术语*/
$.subscribe = function () {
o.on.apply(o, arguments);
return this;
};
$.unsubscribe = function () {
o.off.apply(o, arguments);
return this;
};
$.publish = function () {
o.trigger.apply(o, arguments);
return this;
};
} (jQuery));
jQuery这个前端组件还是非常强的,从它出来后,让几乎所有的HTML前端应用都基于它进行上层开发,而以jQuery为基础,再次扩展出一个前端消息框架也是非常棒的实践!
因为现在的前端应用,基本上构建于jQuery之上,我们就想到了,是否可以借用jQuery里面的off/on的事件机制,进行各前端组件间的发消息呢?!
迅速地 实践了这种解决方案,效果还是让我觉得惊讶不已!
消息的引入,使得模块之间的耦合性减弱,模块编码时自由度增加了!而且影响更长远的是,同时,给整个前端带来了一个消息框架!
任何组件可以在任何有需要的情况下进行发消息,作为被观察者,而消息的受众,观察者,可以有选择地进行处理消息!这里面组件所需要了解的接口,就是消息定义自身,而非被观察者大的定义,组件间“接口”被封装成为一个更小的粒度!进一步的深究,第二次燃起了我们的惊讶。因为,我们最初的方案通过jQuery生成一个空的HTML DIV对象进行消息的on/off/trigger操作;而同事在网上翻阅、参考了其它文章后,发现在jQuery体系内有更好的消息框架代码。
/**
* jquery观察者模式消息框架
*/
(function ($) {
/*闭包内对象,屏蔽外界访问;利用空对象作为jQuery入参,可以仅构造一个与HTML无关的jQuery轻量级对象,但这已经足够使用到jQuery的消息框架了*/
var o = $({});
/*扩展jQuery方法。方法名借用常用的订阅机制术语*/
$.subscribe = function () {
o.on.apply(o, arguments);
return this;
};
$.unsubscribe = function () {
o.off.apply(o, arguments);
return this;
};
$.publish = function () {
o.trigger.apply(o, arguments);
return this;
};
} (jQuery));
jQuery这个前端组件还是非常强的,从它出来后,让几乎所有的HTML前端应用都基于它进行上层开发,而以jQuery为基础,再次扩展出一个前端消息框架也是非常棒的实践!
0 0
- 基于jQuery建立前端消息框架
- 移动前端开发框架jQuery Mobile,基于jQuery
- jQuery easyui 前端框架!
- jQuery前端框架
- 最新JQuery前端框架
- 前端框架 - Jquery EasyUI介绍
- JQuery easyui 搭建前端框架
- 前端框架-10-jQuery入门
- 分享一个基于jQuery,backbone.js和underscore.js的消息提示框架 - Backbone.Notifier
- 基于JQuery框架的AJAX
- 基于JQuery框架的AJAX
- 基于jquery 的前端分页插件
- 基于pagelet的前端框架代码
- 基于JavaScript的前端MVC框架
- 基于angularjs的前端开发框架 - PageSwitcher
- 基于js的前端开发框架对比
- 基于react+redux+webpack的前端框架
- 基于redux的前端框架dva入门教程
- mysql5.7主从复制--在线变更复制类型
- 常用十进制与二进制,八进制,十六进制转换。
- Android基础中四种点击事件的实现及接口回调
- SpringMVC传入参数
- Spark ML 分布式机器学习(二):pipeline
- 基于jQuery建立前端消息框架
- 一、MySQL主从同步(binlog方式)
- Git版本管理之旅(一)—— Git简介及架构浅析
- 2007年大学生电子设计大赛国赛电源类题目设计报告
- 二、MySQL主从切换
- [BZOJ]4547: Hdu5171 小奇的集合 矩阵乘法
- android自动化测试Uiautomator源码分析之一
- [BZOJ 4813][Cqoi2017]小Q的棋盘:TreeDP
- MySQL之GTID简介