怀化seo网站,网站建站ddp,网站名称 域名,培训机构网站制作一个人学许多东西#xff0c;不等于他会很多东西#xff0c;学了也会忘的#xff0c;学了也不等于会运用#xff0c;这时我们应该整一个很复杂的东西出来#xff0c;那么就知道自己到底去到什么程度。基于这样的理由#xff0c;我开始搞框架了#xff0c;像我群里面的许…一个人学许多东西不等于他会很多东西学了也会忘的学了也不等于会运用这时我们应该整一个很复杂的东西出来那么就知道自己到底去到什么程度。基于这样的理由我开始搞框架了像我群里面的许多人那样因此请不要感到惊奇或敬佩什么的。我们总是免不了造轮子前人走过路我们也不得不走只不过怀着不同的目的与心情。我也没有自大到想去挑战这个挑战那个仅仅是想自食其力或许其最好的结果是拿来与友人切磋切磋。于是掂量一下总结如下如果有好心人能迷津指点最好不过。 首先要模块化。像jQuery那样内部看起来乱成一团的类库如果去github看一下发现还是很有组织地分成几块。这样对逐个改进非常有利。当然如果与Ext,Base2,mootools比起来jQuery肯定不合格。 二风格要统一像Prototype满眼是ruby标准库的方法名mootools拥有许多$开头的方法方法多是单个单词jQuery的方法则是多为缩略语。我基本上跟Prototype走但有些名字非常流行我也会采纳的。总之让大家一看就知这方法与属性是干什么。 三不使用with不对Object与DOM的原型进行扩展不滥用try...catch与自动执行函数。 基于上面三条铁则我开始设计我的类库。由于是模块化因此它会把边沿的功能放置到其他JS文件中核心功能置为一个文件。对就像Extmootools那样。这样带来两个问题其他JS文件怎么知道它是本类库的一部分肯定要像Ext暴露一个不会变的全局变量不能像jQuery那样使用noConflict处处退让。注意我做的是框架不是类库。它的功能体系应该具有足够的广度与深度来满足我们的需要不能项目做到一半发现它不够用被逼搭上十几个插件或另一个框架这样的项目维护起来很头痛。换言之它拥有一个坚定不移的命名空间像Ext或YUI那样。另一个问题是如何加载那些子模块。像Ext那样实在太不人道动不动都要自己加。虽然javascript模块的依赖关系肯定比不上java的但我们不应该排除这种可能如我们有一天牛起来要实现一个WEB OS呢因此需要一个像dojo那样的包机制功能不一定像它那样强悍但一定要有。于是第一个功能就这样确定拥有一个模块加载器。 第二个功能是拥有一个强大的类工厂。jQuery在这方面真是不行没有类做大一点的东西这缺点就暴露出来了代码非常难组织别人也很难读懂你的代码。在这方面mootools的实现是最漂亮的这非常值得参考。 第三个功能是浏览器嗅探不过尽量利用非UA技术来实现。各浏览器的navigator.userAgent都在撒谎非常不可靠。事实上不用AU我与群里的朋友找得许多更好的替代品。mootools的思路基本与我的一致需要自豪一下。 第四个功能是类型识别像jQuery只提供了很少实现isArray与isFunction非常不够用有时我们还要判定字符串数字呢不过jQuery1.4中提供了一个isPlainObject用于深拷贝这函数要盗窃一下。 第五个功能是特征侦测基本上用作内部方法。这个我有专文介绍。 第六个功能是扩展一下一些原生对象。让原生对象也能漂亮的“链”起来。暂定对象为Array,String,Number,Function。 第七个功能是提供一个选择器我已经实现了一个正好为它找个好归宿。做了一个框架动不动要借用人家的选择器非常可悲这里特意点明批评一下Prototype1.7rc同学实在太让我失望了。 第八个功能是处理文档指创建节点插入节点替换节点删除节点与复制节点。创建节点中利用innerHTML可以大大提高效率。删除节点方面innerHTML在IE下又立功了具体见我另一篇博文《IE中的 DOM 超空间与innerHTML》 第九个功能是遍历文档指给定一个节点找到其左邻右邻五姑六婆具体可参考一下jQuery的API。 第十个功能是设置与获取元素节点的属性与样式。对className的操作也列入此模块。 第十一个功能是异步调用换言之是Ajax对于不同源者还要用上动态script。JSON的相关处理也列入此模块。 第十二个功能是事件处理主要工作是处理浏览器的差异性二是提供一个观察者模块实现自定义事件三是提供一个内存缓存系统。 第十三个功能是对元素进行变形操作以及基于其上的特效。具体可参考mootools的API。 第十四个功能是提供本地储存利用一切可用的资源如cookie与userDataHTML5还带来许多好东西。 第十五个功能是提供一个列队机制这应该像dojo或Mochikit的Deferred模块而不是jQuery那个简单的queue与delay。 第十六个功能是统一对XML的操作。 嘛基本上是这样功能很多不过由于是对原生对象进行了原型扩展许多方法会写得很精简的。如有什么好建议不妨提出来我听听。