最近在项目中考虑如何让代码重用,发现有2种途径(注,目前项目中是用到自己写的func,还没使用mvc框架):
一种时抽取出公用的方法,利用对象字面量放到命名空间中。如,要添加一个打标签功能,因为所有的项目页面方法交互基本是相同的,只写一次,任何分类下的文件打标签时都可以调用此命名空间下的方法。如
var disk.addTags={};
var disk.addTags.removeTag = (function(){
//具体的js代码
});
然后在调用时就可以使用disk.addTags.removeTag()来调用函数执行。但是此种方法有一个局限,就是你列举的对象字面量方法一定要所有的开发人员都知道有这个方法,不然就需要浪费时间去查找。同时需要传递的参数也要规定好、封装好。所以前期的准备和使用中的文档一定要充足。
另外一种就是定义一些公用的方法,也就是本文要整理的全局规则。让使用者在不知不觉中就已经在调用此方法。
1、网站在执行请求的过程中,都会显示一个loading的模态窗口,在请求返回后,此模态窗口消失,显示更新后的内容。可以使用如下方法:
var util.ajax=(function(opts,cusOpts){
$("#loadingDiv").css("display","block");
return $.ajax(opts,true);
});
$(document).ajaxStop(function () {
$("#loadingDiv").css("display","none");
});
这两个方法在ajax请求发起和结束时,展示和隐藏loadingDiv,你需要做的就是对loadingDiv进行样式处理了。
2、ajaxError的处理
$(document).ajaxError(function(e, jqXHR, ajaxSettings, thrownError){
var str = jqXHR.responseText;
//这里写入一些错误处理,jqXHR是返回值,如我们项目中的超时重新登录就是在这里控制的
if(str == undefined){
$("#loadingDiv").css("display","none");
util.alert("系统异常");
return false;
}
var index = str.indexOf('***这里要写上一些超时时server返回的信息**');
if(index != -1){
var url = str.substring(index+1);
util.alert("长时间未操作,系统超时请重新登录!");
parent.parent.location.href =url + "/login";
}else{
util.alert("程序异常,请联系管理员");
}
})
3、重写alert函数或者使用其他函数,来做错误提示,注意需要设计一个公用的样式
var alert=(function(message,iconType){
//这里是做了一个中英文的转义
var outputmsg=message;
var chineseoutputmsg = hashMap.Get(message);
if(chineseoutputmsg != null ){
outputmsg = hashMap.Get(message);
}
if(outputmsg==null || outputmsg == ""){
outputmsg=message;
}
if(outputmsg == "系统超时请重新登录"){
location.href="/login";
}
if(outputmsg == null){
outputmsg = "异常错误";
}
//这里控制是显示成功的提示还是失败
if(iconType==true){
$.scojs_message(outputmsg, $.scojs_message.TYPE_OK);
}else{
$.scojs_message(outputmsg, $.scojs_message.TYPE_ERROR);
}
});
4、hashMap的封装使用
var hashMap = {
Set : function(key,value){this[key] = value},
Get : function(key){return this[key]},
Contains : function(key){return this.Get(key) == null?false:true},
Remove : function(key){delete this[key]}
};
hashMap.Set("success", "操作成功了^-^");
//hashMap主要用于提示的替换,保存可能的结果较多时的操作。
暂时先写这些,整理过程中再补充