JavaScript 開(kāi)發(fā)中規(guī)范性的一點(diǎn)感想
1.常用的方法統(tǒng)一放置
例如:在用戶注冊(cè)時(shí),時(shí)常需要判斷文本框中字符是否是漢字、英文、數(shù)字或郵箱地址等等。何不把這些方法統(tǒng)一放在一個(gè)腳本中,取名叫做utility.js呢?
//待需要時(shí)另存為一個(gè)js
function isNull(obj)
{
if (!obj || obj.length==0 || obj=="")
{
parent.MyAlert("標(biāo)注名不能為空!",alertImg);
return false;
}
else
{
return true;
}
}
// 驗(yàn)證是否為整數(shù)
function isNumber(oNum)
{
if(!oNum) return false;
try{
if(parseInt(oNum)!=oNum) {
parent.MyAlert("查詢距離請(qǐng)?zhí)顚?xiě)正整數(shù)!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("查詢距離請(qǐng)?zhí)顚?xiě)正整數(shù)!",alertImg);
return false;
}
return true;
}
// 驗(yàn)證是否為中文
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("關(guān)鍵字請(qǐng)?zhí)顚?xiě)中文!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("關(guān)鍵字請(qǐng)?zhí)顚?xiě)中文!",alertImg);
return false;
}
}
// 驗(yàn)證是否為中文或字母
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("地名請(qǐng)?zhí)顚?xiě)中文或拼音!",alertImg);
return false;
}
}
catch(ex)
{
parent.MyAlert("地名請(qǐng)?zhí)顚?xiě)中文或拼音!",alertImg);
return false;
}
}
// 結(jié)果保留2位小數(shù)
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.提示、報(bào)錯(cuò)信息統(tǒng)一放置
看了上面的代碼,您是否也發(fā)現(xiàn)一個(gè)問(wèn)題:下一個(gè)項(xiàng)目中如果提示、報(bào)錯(cuò)信息不一樣,還需要重新改動(dòng)上述代碼。何不把提示信息統(tǒng)一放在一個(gè)腳本中,取名叫做resource_zh.js呢?
在多語(yǔ)言版本的軟件中,也有用類似的招數(shù)達(dá)到切換界面語(yǔ)言,有發(fā)現(xiàn)?呵呵。
var page_res = {
"meter": "米",
"kilometer": "千米(公里)",
"mile": "英里",
"yard": "碼",
"degree": "度",
"millimeter": "毫米",
"saveMap": "保存地圖",
"printMap": "打印地圖",
"queryResult": "查詢結(jié)果",
"queryResultNull": "查詢結(jié)果為空",
"experssionCanNotNull": "查詢表達(dá)式不能為空",
"networkInfo": "路徑信息",
"arcInfo": "弧段信息",
"addEntitySuccess": "添加地物成功! ",
"addEntityFail": "添加地物失敗!",
"updateEntitySuccess": "更新地物成功!",
"updateEntityFail": "更新地物失敗!",
"updatePropertySuccess": "更新屬性成功!",
"updatePropertyFail": "更新屬性失敗!",
"deleteEntitySuccess": "刪除地物成功!",
"deleteEntityFail": "刪除地物失敗!",
"closestFacilityFail": "最近設(shè)施分析失敗,請(qǐng)重新選擇",
"fieldCanNotNull": "字段數(shù)不能為空",
"fieldMustInteger": "字段數(shù)必須為整數(shù)",
"fieldMustMoreThanZero": "字段數(shù)必須大于0",
"numberCanNotNull": "數(shù)值不能為空"
}
我們可以把常用的單位、按鈕文本、提示信息都放在這里。然后最先加載該腳本,通過(guò)eval實(shí)例化出一個(gè)對(duì)象。通過(guò)類似res.networkInfo便可獲得對(duì)應(yīng)的內(nèi)容。
3.AjaxRequest請(qǐng)求封裝
跟第一點(diǎn)意義是一致的,在現(xiàn)在開(kāi)發(fā)中頻繁使用Ajax,如果您沒(méi)用jQuery等腳本庫(kù)的話,可能是自己寫(xiě)每次請(qǐng)求和回調(diào)的函數(shù)。何不把這些方法都放在一個(gè)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) //開(kāi)放瀏覽器
{
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("沒(méi)有客戶端處理函數(shù)!")
}
}
在使用時(shí)實(shí)例化一個(gè)XHR對(duì)象出來(lái),例如:var legendObj=new XHR(function (){...}); 然后用legendObj.Onstar("POST","Handlers/legendHandler.ashx",false,"mapName=" + mapName);提交請(qǐng)求即可。
- js 編寫(xiě)規(guī)范
- JavaScript開(kāi)發(fā)規(guī)范要求(規(guī)范化代碼)
- javascript代碼規(guī)范小結(jié)
- JavaScript的代碼編寫(xiě)格式規(guī)范指南
- JavaScript 開(kāi)發(fā)規(guī)范要求(圖文并茂)
- JavaScript之編碼規(guī)范 推薦
- JavaScript模塊規(guī)范之AMD規(guī)范和CMD規(guī)范
- 淺析JavaScript中的CSS屬性及命名規(guī)范
- 現(xiàn)如今最流行的JavaScript代碼規(guī)范
- 超全面的JavaScript開(kāi)發(fā)規(guī)范(推薦)
相關(guān)文章
Bpmn.js activiti 流程編輯器詳細(xì)教程
流程編輯器是一種用于創(chuàng)建、編輯和管理流程圖的工具,它提供了一個(gè)可視化的界面,使用戶能夠以圖形化的方式定義和配置流程的各個(gè)步驟、條件和流程間的關(guān)系,說(shuō)明關(guān)于bpmn.js的一些事件, 通過(guò)本文你可以了解到,感興趣的朋友一起看看吧2023-10-10js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲
這篇文章主要為大家詳細(xì)介紹了js實(shí)現(xiàn)飛機(jī)大戰(zhàn)小游戲,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2020-08-08BootstrapValidator實(shí)現(xiàn)表單驗(yàn)證功能
這篇文章主要為大家詳細(xì)介紹了BootstrapValidator實(shí)現(xiàn)表單驗(yàn)證功能,文中示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-11-11解決layui的table插件無(wú)法多層級(jí)獲取json數(shù)據(jù)的問(wèn)題
今天小編就為大家分享一篇解決layui的table插件無(wú)法多層級(jí)獲取json數(shù)據(jù)的問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2019-09-09Extjs 中的 Treepanel 實(shí)現(xiàn)菜單級(jí)聯(lián)選中效果及實(shí)例代碼
這篇文章主要介紹了Extjs 中 Treepanel 實(shí)現(xiàn)菜單級(jí)聯(lián)選中效果,需要的朋友可以參考下2017-08-08使用canvas及js簡(jiǎn)單生成驗(yàn)證碼方法
在很多時(shí)候都需要用到驗(yàn)證碼,前端驗(yàn)證碼需要知道Html5中的canvas知識(shí)點(diǎn)。驗(yàn)證碼生成步驟是:1.生成一張畫(huà)布canvas 2.生成隨機(jī)數(shù)驗(yàn)證碼 3.在畫(huà)布中生成干擾線 4.把驗(yàn)證碼文本填充到畫(huà)布中 5.點(diǎn)擊畫(huà)布更換驗(yàn)證碼2017-04-04JS模擬實(shí)現(xiàn)哈希表及應(yīng)用詳解
這篇文章主要介紹了JS模擬實(shí)現(xiàn)哈希表及應(yīng)用,結(jié)合實(shí)例形式分析了javascript模擬實(shí)現(xiàn)哈希表的步驟、相關(guān)操作技巧與使用方法,需要的朋友可以參考下2018-05-05js調(diào)試工具 Javascript Debug Toolkit 2.0.0版本發(fā)布
Javascript Debug Toolkit是一個(gè)可以跨瀏覽器調(diào)試javascript的開(kāi)源項(xiàng)目,支持在IE,FIREFOX,SAFARI,CHROME等瀏覽器中調(diào)試javascript。2.0.0版本做了較大變動(dòng),增加以下功能2008-12-12