软件下载 | 资讯教程 | 最近更新 | 下载排行 | 一键转帖 | 发布投稿
您的位置:最火下载站 > Web前端 > Ajax/JavaScript > 叹一下我的 jskit 的核心代码

叹一下我的 jskit 的核心代码

  烈火网(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+"\n"+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();
    });
}

    相关阅读
    栏目导航
    推荐软件