• 使用面向对象的方式书写jQuery业务代码


    因为公司还有还有一些老项目使用的是前后端不分离的形式,不得不采用jQuery作为技术栈进行前端开发。考虑到函数排序很随性可能导致后期维护麻烦的情况,按照知乎小爝Live所推荐的方式做了一次改版,感觉还行,特来分享。

    整体页面结构如下

    	;(function (global, $, doc) {
    		‘use strict’;
    		var Application = function () {
    			this.a = 1,
    			this.b = 2,
    			this.eventsMap = {
    				“click #btnOne”: “funcOne”,
    				“click #btnTwo”: “funcTwo”
    			}
    			this.initEvent();
    		};
    		Application.prototype = {
    			constructor: ‘Application’,
    			funcOne: function () {
    				console.log(‘You are clicked btn one!’);
    			},
    			funcTwo: function () {
    				console.log(‘You are clicked btn two!’);
    			}
    		};
    		global.Application = Application;
    		$(function () {
    			new Application()
    		});
    	})(this, jQuery, jQuery(document));
    

    我们在每个页面下,创建一个匿名函数,传入当前上下文、jQuery对象 以及 document 元素。在一开始,在onload完成后,创建一个当前页面的业务处理对象,有点像接口的感觉。然后依次设定私有变量,当前页面的事件映射和初始化函数,并将所有函数绑定到原型上,方便使用。

    关于 eventsMap 对象的使用, 需要对其中的所有事件进行一次性全部绑定。所以初始化函数执行时应该有函数映射的初始化。函数如下:

    initEventsMap: function (maps) {
    	var matchExp = /^(w+)s*(.*)$/;
    	for (var keys in constMap) {
    		if (maps.hasOwnProperty(keys)) {
    			var matchResult = keys.match(matchExp);
    			doc.on(matchResult[1], matchResult[2], this[maps[keys]].bind(this))
    			// 原型为 document.on(event, element, function)
    		}
    	}
    }
    

    至此,我们已经可以愉快地写函数代码了。当需要增加绑定事件时,只需要在eventsMap中注册事件即可。按照这种统一初始化绑定的思路,你还可以对选择器进行简化。

    	this.selectMap = {
    		“idELement”: ‘#element’,
    		“classElement”: “.head .page-title”
    	}
    
    	initSelector (maps) {
    		for(var keys in maps) {
    			if (maps.hasOwnProperty(keys)) {
    				this[keys] = $(maps[keys])
    			}
    		}
    	}
    

    总结:

    该框架通过事件与地图的映射关系,统一对事件进行绑定,更直观的查看元素,方便定位事件位置。同时,结构清晰的代码、统一的入口更符合高内聚、低耦合的软件设计原则,有不足和地方欢迎探讨。

  • 相关阅读:
    一个简单的瀑布流效果
    C#遇到的一些奇怪问题
    能够按页号提取word文档文本内容的小程序,由C#实现
    设计模式学习之简单工场模式
    设计模式学习之策略模式
    检查机器是否安装了.NET Framework 或已经安装了哪些.net版本
    书籍清单
    使用Func<T>对对象进行排序
    定义一个委托的三种形式
    设计模式学习之设计原则
  • 原文地址:https://www.cnblogs.com/miku561/p/12449977.html
Copyright © 2020-2023  润新知