海量操作下的js编码规范

最近公司的很多项目都涉及到了海量操作  之前说好的插件基本上都趴了
无奈只好自己动手写了
(别问我 为什么不用类似分页之类的方法解决,客户说不行)
解决了3处:图片相册   树形插件  缩略图
以树形插件为例   来和大家探讨下  海量操作下的JS编码
web上的树形插件不少  之前也写过几个  很简单  但是在以10W个子节点的加载情况下  运行的效果确实很糟糕
(另外  我会告诉你客户要求的是IE8么。。。。)
firefox下 展开10W个节点的时间花费 基本上在5-10S左右
所以只好放弃 普通的tree插件   改用即时渲染的方式来加载
窗体一次性只显示大约30-50条   因为节点的请求是异步的。。。。(废话)
所以构思在于 在js代码里维护一套自己的数据流(数据树) 对异步请求回来的数据进行动态的填充和记录索引
并对每条数据进行必要的属性编辑   包括上下节点的关系  即时绘制的处理方式(后面会提及)
另外  因为是tree型插件  所以有必要返回一个操作对象 给web  方便其他空间调用  
大概的一个编码方式如下
$.fn.extend({
	// config  配置文件  主要包括 独特功能的开关 如:是否第一次就进行ajax请求
	tree : function ( config ){
		var tree_data,
		    ajax_data,
		    init_GUI,
		    data_control_tool,
		    manager;
		init_GUI = {
			/*!
			 *	初始化tree插件界面  包括放置必要的 DOM元素
			 */
			function(){}
		};
		ajax_data = {
			/*!
			 *	这里放置  ajax请求
			 *	对 请求回来的数据 填充致tree_data中 并记录索引  建议以路径的方式记录:0-0-0-0-1 
			 *	另外  进行节点的属性编辑
			 */
			function(){}......
		};
		data_control_tool = {
			/*!
			 *	这里放置  对数据的处理  返回一个应该符合界面展示的结果  并支持即时绘制渲染
			 *	每一条属性根据上下点的关系 进行动态的属性编辑  
			 */
			function(){}.......
		};
		manager = {
			/*!
			 *	返回致前端的管理对象   这里不做详细累述  
			 *	ps:这里的function应该尽量的 短小    仅仅只是作为提供外部API接口  
			 */
			function(){}......
		};
		return manager;
	};
});


这里是以JQ插件的形式做的论述  其他不做详解
主要的注意点  在于:
1.各个职能独立  这样的编码规范 可以让你在编码的时候更加有侧重点   
2.数据处理 与页面渲染 完全分开  上述的行为如再细分的话  可以再划分一处事件处理机制的响应 
3.return出来的manager  可以极大的方便插件整合至项目中时  对其它的插件的编码影响 

上面3点 只做抛砖引玉之用   

欢迎大神们吐槽

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值