JavaScript 开发中规范性的一点感想

 更新时间:2009年06月23日 18:25:33   作者:  
在开发中通用的几个方法,我们把它们放到utility目录下或者utility.js中;所有的提示信息和报错信息统一放置在一起。看起来都是小小的几步,却能让咱们开发的代码同事读起来更顺畅,下个项目中也能用上。
可谓一劳永逸,不要重复造轮子:)
1.常用的方法统一放置
例如:在用户注册时,时常需要判断文本框中字符是否是汉字、英文、数字或邮箱地址等等。何不把这些方法统一放在一个脚本中,取名叫做utility.js呢?
复制代码 代码如下:

//待需要时另存为一个js

function isNull(obj)
{
if (!obj || obj.length==0 || obj=="")
{
parent.MyAlert("标注名不能为空!",alertImg);
return false;
}
else
{
return true;
}
}

// 验证是否为整数
function isNumber(oNum)
{
if(!oNum) return false;

try{
if(parseInt(oNum)!=oNum) {
parent.MyAlert("查询距离请填写正整数!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("查询距离请填写正整数!",alertImg);
return false;
}

return true;
}

// 验证是否为中文
function isChinese(oCn)
{
if (!oCn || oCn.length==0) return false;

try{
var reg = /^[\u4e00-\u9fa5]+$/i; //含中文

if ( reg.test(oCn) )
{
return true;
}
else{
parent.MyAlert("关键字请填写中文!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("关键字请填写中文!",alertImg);
return false;
}
}

// 验证是否为中文或字母
function isEnCh(oStr)
{
if (!oStr || oStr.length==0) return false;

try{
var reg = /^[a-zA-Z\u4E00-\u9FA5]/g; //含中文或拼音

if ( reg.test(oStr) )
{
return true;
}
else{
parent.MyAlert("地名请填写中文或拼音!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("地名请填写中文或拼音!",alertImg);
return false;
}
}

// 结果保留2位小数
function roundAmount(n){
var s = "" + Math.round(n * 100) / 100;
var i = s.indexOf('.')
if (i < 0) return s + ".00";

var t = s.substring(0, i + 1) + s.substring(i + 1, i + 3);
if (i + 2 == s.length) t += "0";

return t;
}

2.提示、报错信息统一放置

看了上面的代码,您是否也发现一个问题:下一个项目中如果提示、报错信息不一样,还需要重新改动上述代码。何不把提示信息统一放在一个脚本中,取名叫做resource_zh.js呢?

在多语言版本的软件中,也有用类似的招数达到切换界面语言,有发现?呵呵。
复制代码 代码如下:

var page_res = {
    "meter": "米",
    "kilometer": "千米(公里)",
    "mile": "英里",
    "yard": "码",
    "degree": "度",
    "millimeter": "毫米",
    "saveMap": "保存地图",
    "printMap": "打印地图",
    "queryResult": "查询结果",
    "queryResultNull": "查询结果为空",
    "experssionCanNotNull": "查询表达式不能为空",
    "networkInfo": "路径信息",
    "arcInfo": "弧段信息",
    "addEntitySuccess": "添加地物成功! ",
    "addEntityFail": "添加地物失败!",
    "updateEntitySuccess": "更新地物成功!",
    "updateEntityFail": "更新地物失败!",
    "updatePropertySuccess": "更新属性成功!",
    "updatePropertyFail": "更新属性失败!",
    "deleteEntitySuccess": "删除地物成功!",
    "deleteEntityFail": "删除地物失败!",
    "closestFacilityFail": "最近设施分析失败,请重新选择",
    "fieldCanNotNull": "字段数不能为空",
    "fieldMustInteger": "字段数必须为整数",
    "fieldMustMoreThanZero": "字段数必须大于0",
    "numberCanNotNull": "数值不能为空"
}

我们可以把常用的单位、按钮文本、提示信息都放在这里。然后最先加载该脚本,通过eval实例化出一个对象。通过类似res.networkInfo便可获得对应的内容。

3.AjaxRequest请求封装

跟第一点意义是一致的,在现在开发中频繁使用Ajax,如果您没用jQuery等脚本库的话,可能是自己写每次请求和回调的函数。何不把这些方法都放在一个ajax.js中呢?
复制代码 代码如下:

var xmlhttpObj=false;
function XHR(CallBack)
{
this.callback=CallBack;
}
XHR.createXMLHttp = function ()
{
if(window.ActiveXObject) //IE浏览器
{
try
{
xmlhttpObj = new ActiveXObject("Microsoft.XMLHTTP");//IE4.0
}
catch (e)
{
try
{
xmlhttpObj = new ActiveXObject("Msxml2.XMLHTTP");//IE5.0以上
}
catch (e2)
{
xmlhttpObj=false;
}
}
}
else if(window.XMLHttpRequest&&!xmlhttpObj) //开放浏览器
{
xmlhttpObj = new XMLHttpRequest();
}
}
XHR.prototype.Onstar = function (method,Url,bFlag,param)
{
if(this.callback!=null)
{
XHR.createXMLHttp();
xmlhttpObj.onreadystatechange=this.callback;
xmlhttpObj.open(method,Url,bFlag);
xmlhttpObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded;");
xmlhttpObj.send(param);
}
else
{
alert("没有客户端处理函数!")
}
}

在使用时实例化一个XHR对象出来,例如:var legendObj=new XHR(function (){...}); 然后用legendObj.Onstar("POST","Handlers/legendHandler.ashx",false,"mapName=" + mapName);提交请求即可。

相关文章

  • Bpmn.js activiti 流程编辑器详细教程

    Bpmn.js activiti 流程编辑器详细教程

    流程编辑器是一种用于创建、编辑和管理流程图的工具,它提供了一个可视化的界面,使用户能够以图形化的方式定义和配置流程的各个步骤、条件和流程间的关系,说明关于bpmn.js的一些事件, 通过本文你可以了解到,感兴趣的朋友一起看看吧
    2023-10-10
  • js实现飞机大战小游戏

    js实现飞机大战小游戏

    这篇文章主要为大家详细介绍了js实现飞机大战小游戏,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2020-08-08
  • BootstrapValidator实现表单验证功能

    BootstrapValidator实现表单验证功能

    这篇文章主要为大家详细介绍了BootstrapValidator实现表单验证功能,文中示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2019-11-11
  • 解决layui的table插件无法多层级获取json数据的问题

    解决layui的table插件无法多层级获取json数据的问题

    今天小编就为大家分享一篇解决layui的table插件无法多层级获取json数据的问题,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-09-09
  • Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码

    Extjs 中的 Treepanel 实现菜单级联选中效果及实例代码

    这篇文章主要介绍了Extjs 中 Treepanel 实现菜单级联选中效果,需要的朋友可以参考下
    2017-08-08
  • 使用canvas及js简单生成验证码方法

    使用canvas及js简单生成验证码方法

    在很多时候都需要用到验证码,前端验证码需要知道Html5中的canvas知识点。验证码生成步骤是:1.生成一张画布canvas 2.生成随机数验证码 3.在画布中生成干扰线 4.把验证码文本填充到画布中 5.点击画布更换验证码
    2017-04-04
  • jsp 自动编译机制详细介绍

    jsp 自动编译机制详细介绍

    这篇文章主要介绍了 Jasper的自动检测实现的机制比较简单,依靠某后台线程不断检测JSP文件与编译后的class文件的最后修改时间是否相同,若相同则认为没有改动,但倘若不同则需要重新编译,需要的朋友可以参考下
    2016-12-12
  • JS模拟实现哈希表及应用详解

    JS模拟实现哈希表及应用详解

    这篇文章主要介绍了JS模拟实现哈希表及应用,结合实例形式分析了javascript模拟实现哈希表的步骤、相关操作技巧与使用方法,需要的朋友可以参考下
    2018-05-05
  • javascript键盘上下键的操作(选择)

    javascript键盘上下键的操作(选择)

    不错的使用键盘上下键实现选择的代码,方便用户操作
    2008-06-06
  • js调试工具 Javascript Debug Toolkit 2.0.0版本发布

    js调试工具 Javascript Debug Toolkit 2.0.0版本发布

    Javascript Debug Toolkit是一个可以跨浏览器调试javascript的开源项目,支持在IE,FIREFOX,SAFARI,CHROME等浏览器中调试javascript。2.0.0版本做了较大变动,增加以下功能
    2008-12-12

最新评论