基于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为基础,再次扩展出一个前端消息框架也是非常棒的实践!
0 0
原创粉丝点击