看完【一个javascript框架应有的功能】博客文章后有感
原文:http://www.cnblogs.com/rubylouvre/archive/2010/04/08/1706888.html
刚在Google Reader上看到射雕推送过来的文章,正好我也在写一个javascript类库,读完后感触很深,我是强烈支持"重复造轮子"的人,"重复造轮子"不是简单的模仿和抄袭,而是反复的思考和学习。实践是提高自身技术水平的最佳路径,你开发出来的框架不一定很多人使用,但自己技术的提高是毋庸置疑的。
非常欣赏这篇文章的开头。
引用
一个人学许多东西,不等于他会很多东西,学了也会忘的,学了也不等于会运用,这时我们应该整一个很复杂的东西出来,那么就知道自己到底去到什么程度。基于这样的理由,我开始搞框架了,像我群里面的许多人那样,因此请不要感到惊奇或敬佩什么的。我们总是免不了造轮子,前人走过路,我们也不得不走,只不过怀着不同的目的与心情。我也没有自大到想去挑战这个挑战那个,仅仅是想自食其力,或许其最好的结果是拿来与友人切磋切磋。于是掂量一下,总结如下,如果有好心人能迷津指点最好不过。
不过对有些细节的看法和作者有些不同,下面写出来供大家参考。
1. 模块化:从jQuery的作者的blog和代码可以看出他是linux和perl的爱好者,文件合并用Makefile,jQuery的函数名非常简洁,这和linux的console工具名和perl函数名非常类似,所以喜欢OO风格的人看jQuery代码可能比较乱。我认为jQuery的这种写法有助于缩小源代码体积,毕竟js与其它语言不同,都要经过下载过程,保持代码可读性和性能的前提下减少代码行数是应该的。
2. eval有时候还是要用的,比如JSON的解析。
3. 强大的类工厂: 我觉得"代码非常难组织、别人也很难读懂你的代码"和有没有类工厂无关,OO在有些方面(DOM、UI)确实比较直观易懂,我也不反对在js上使用OO,不过坚决反对就因为没有OO所以代码难懂这样的观点,有时候为了OO而OO会额外增加一堆代码,完全没必要。
4. 浏览器嗅探:各主流浏览器的navigator.userAgent还是很有规律的,不知道作者为什么说不可靠。
5. 扩展原生对象: 除了写出来的代码比较漂亮之外看不出好处。