网(LieHuo.Net)教程 我的JSKit 蛮早就开始写了 一直都不满意 也没怎么用得上。在此其间 下载了众多的框架 看他们的架构、设计 也没有找到令自己满意的版本 最终还是不断的改进 其实就是一直在减少核心的代码 到最终我比较满意的版本 结果只封装了两个公共方法 一个是Import(载入代码) 另一个是Run(执行代码)。
为什么网上那么多优秀的 功能强大的框架我都不满意?因为 我对框架的需求其实非常的简单 我只需要它可以管理组织好我的代码就OK了 我不需要在实现一个简单的功能时 载入一堆在我实现某功能过程中 根本用不到的代码 我很讨厌这种浪费 所以寻觅了很久 都没找到很中意的东西。
作为一名入门没多久的程序,一直追求简单的逻辑代码,所以对于一些浪费是很看不惯的,对于一些复杂的逻辑 看了半天也看不懂,最后都是手写了事。回顾这些年的编码之路,可悲的发现,这辈子只能处于入门级别了,达不到更高的专家(师)级别了,因为学得太杂,精力被分散了。如果有来生,我想我会争取一条道走到黑。
另外,再讲两句下面的这段代码,因为代码很少,所以也没啥注释可写,只讲一下思路吧。
Import方法:载入一个类,可以是一个很简单的类,也可以是一个框架。 我的组织管理代码的想法主要是通过import方法实现 比如我在jskit中建了一个 com.imcjj子文件夹,里面放了一个Browser.js 文件 就通过 JK.Import("com.imcjj/Browser") 导入Browser.js文件的代码 "JK"是JSKit的一个实例
以下为引用的内容: /** * CJJ's JavaScript Kit * * @type : class * @version : v1.0 build 20090826 * @memo : none * ----------------------------------- * Copyright (c) cjj rusty_sun[AT]hotmail.com */ function JSKit(path){ if(!path){return null}; /*private member variable*/ var _runTimer=null, _importManage=[], _path=path; /*public method*/ JSKit.prototype.Import=function(file){ var script; var jskit=this; if(!_importManage[file]){_importManage[file]="loading"}; if(_importManage[file]!="loaded"){ script=document.createElement("script"); script.src =_path+file+".js"; script.onreadystatechange=function(){ if(this.readyState=='complete'){ var lastClass=file.substring(file.lastIndexOf("/")+1,file.length); if(lastClass=="Import"||lastClass=="Run"){return}; jskit[lastClass]=eval(lastClass); _importManage[file]="loaded"; script.onreadystatechange=null; return } }; script.onload=function(){ var lastClass=file.substring(file.lastIndexOf("/")+1,file.length); if(lastClass=="Import"||lastClass=="Run"){return}; jskit[lastClass]=eval(lastClass); _importManage[file]="loaded"; script.onload=null; }; document.getElementsByTagName("head")[0].appendChild(script); } };/*end of Import*/ JSKit.prototype.Run=function(code){ var loaded=true; var jskit=this; for(importFile in _importManage){ if(_importManage[importFile]=="loading"){loaded=false;break} }; if(!loaded){_runTimer=setTimeout(function(){jskit.Run(code)},500); return}; if(_runTimer){clearTimeout(_runTimer)}; if(typeof(code)=="function"){code()} };/*end of "Run"*/ } |
调用演示:
以下为引用的内容: var JK=new JSKit("/jskit/jskit.src/"); if(JK){ JK.Import("com.imcjj/FormValidate"); JK.Import("com.imcjj/Browser"); JK.Run(function(){ var browser=new JK.Browser(); alert(browser.name+""+browser.agent); var oFormValidate=new JK["FormValidate"]("frmDemo"); var oObj=oFormValidate._form; if(!oObj){alert("未发现表单,无法进行表单验证");document.close();} var oTip=new Tip(); oTip._struct="<strong>{#text#}</strong>"; oTip._inertDirection=0; oTip.add("tip_Name", "tip_bottom", "自定义提示消息", oObj.elements["Name"].parentNode,"SPAN", "<strong>{#text#}</strong>"); //添加外部验证函数 //oFormValidate.addValidate("isDate",fnCheckDate,"f","日期是否正确?"); //参数:验证方法,需要验证的表单元素的ID属性 加*号表示该项为必填项 oFormValidate.addRule("isNotNull","*Card"); //oFormValidate.addRule("isDate","*Birthday"); //调用自定义验证规则 //AJAX验证最后一个是AJAX验证函数参数列表:'getName.asp oFormValidate.addRule("isExists","Name",["'getName.asp'"], oTip); oFormValidate.addRule("isLen","*Password",[4,8]); oFormValidate.addRule("isSame","*Password1",["'password2'"]); oFormValidate.listen(); }); } |