「已注销」 2009-09-16 08:47
浏览 387
已采纳

一个框架的核心 是大核好?还是微核?甚至没核?

网络上流传着众多的框架 好些框架的核心 都带有蛮强 蛮齐全的函数 哪怕刚开始时 不全 经过一段时间的发展之后 也越来越庞大了 典型的像 JQuery。框架和类库、函数库有区别么? 框架 首先需要解决的核心问题是什么?前不久开始 写自己的框架 其实不能说是框架吧 只能说是我想管理好我的JS代码 随着JS应用的深入 为了方便今后的重复使用 我在写一些应用的时候 尽可能的将应用以复用目的 封装好。但在写这个JS工具的核心时 迷茫了好一阵 本来打算封装一些常用的函数进行 但随着深入编写 发现 核心程序在不断的增长 最终变得让我很看不顺眼 然后开始砍功能 因为不是所有的JS应用 都会用到我封装的一些功能 最终砍得只剩一个动态引入的功能了 但现在发现 这个功能似乎也没必要存在 那最终的结果 就是我一段时间白努力了。
[code="java"]
/**

  • CJJ's JavaScript Kit *
  • @type : class
  • @version : v1.0 build 20090826
  • @memo : none
  • -----------------------------------
  • Copyright (c) cjj http://www.imcjj.com
    /
    function JSKit(path){
    /*private member variable
    /
    var _runTimer=null, _importManage=[], _path=path;

    /*public method*/
    JSKit.prototype.Import=function(file,isClass){
    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'||this.readyState=='loaded'){
                var lastClass=file.substring(file.lastIndexOf("/")+1,file.length);
    
                if(lastClass=="Import"||lastClass=="Run"){return};
                if (isClass){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};
            if(isClass!=false){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)},200); return};
    if(_runTimer){clearTimeout(_runTimer)};
    if(typeof(code)=="function"){code()}
    

    };/*end of "Run"*/
    }
    [/code]

想知道 大家对框架 的实现 有啥想法?意见
[b]问题补充:[/b]
为啥不是够用就好呢?
[b]问题补充:[/b]
关于 够用 ext的 core 还是大了 一些简单的JS应用效果 根本不需要那么多东西 关于 打包 像mootools 处理得不错 关于core 我更希望它具有原子性 不能再分割了 按这个标准来分的话 估计 每个框架的core 只要封装个 document.getElementById 就够了 因为它的应用还是比较广的
[b]问题补充:[/b]
因此 我比较喜欢 一个功能非常少的core 但拥有大量的 组件 不希望是杀鸡用牛刀 简单的核心 不容易出错 容易管理 把出bug的范围 锁定在组件那边
[b]问题补充:[/b]
一个core就要25k 还不大么?说实话 我觉得core超过5k就有点不爽了,超过10k就难以接受了。框架 需要解决的是代码的组织管理 而不是一个很强大的类库 网站上的JS应用程序 很多都不需要那么强大的core 用动不动就几十K的core写一些应用 杀鸡用牛刀 有些人还乐此不疲的在那宣传 只是一些简单的行为控制而已。css表页 html语义结构 js行为控制 唉 很多都忘了最根本的东西了。
[b]问题补充:[/b]
“精力集中在程序的效率等方面” 这些方面怎么体现?
[b]问题补充:[/b]
5K VS 25K 可以无视? 你可以问一下淘宝的前端开发 从25K变为5K会得到一个什么结果?
[b]问题补充:[/b]
关于 追求文件的大小 确实是在没有淘宝那种程度的应用是 不必太过追求 不然就是有“洁癖” 在可能的情况下 就尽可能的瘦身 据淘宝的前端说 他们节约1K 可以省下十几w 所以他们对这类东西 会比较在意 而他们在准备用什么框架时 考虑的是综合成本 如载入一个核心为几十K的框架 但在整站的应用程序中 可以省下多少 会综合起来考虑吧 我没仔细研究过ext 所以我不认为它有多慢 或其他的什么问题 我关注的是 一个框架的核心 哪些东西是必须的 哪些东西是可选的 代码通过怎样的形式来合理的组织管理 因为我觉得框架的核心功能 没必要动不动就是几十K 近百K啥的

  • 写回答

8条回答 默认 最新

  • 「已注销」 2009-09-17 09:11
    关注

    算了,还是我来把话说白了吧。从你这些问题的内容还有你贴出来的这段代码看,可以看出,你对主流的一些框架根本就没有读过人家的源码。就你这水准,在这儿奢谈什么框架?!整日的扯淡,洗洗睡吧!

    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论
查看更多回答(7条)

报告相同问题?

悬赏问题

  • ¥15 python中合并修改日期相同的CSV文件并按照修改日期的名字命名文件
  • ¥15 有赏,i卡绘世画不出
  • ¥15 如何用stata画出文献中常见的安慰剂检验图
  • ¥15 c语言链表结构体数据插入
  • ¥40 使用MATLAB解答线性代数问题
  • ¥15 COCOS的问题COCOS的问题
  • ¥15 FPGA-SRIO初始化失败
  • ¥15 MapReduce实现倒排索引失败
  • ¥15 ZABBIX6.0L连接数据库报错,如何解决?(操作系统-centos)
  • ¥15 找一位技术过硬的游戏pj程序员