我一直认为,能写一个小 jq 框架的话,基本上前端的知识点都能掌握,还有各个浏览器的坑,对提高性能与今后的代码质量有帮助。我自己进阶了前端的各种技术也是从写框架开始的。
mornjs 是我一年多前的作品,代码在 github 上:github.com/icymorn/morn-js,第一次用 grunt 来组织项目,并且有详尽的代码注释,对个人提高还是蛮多的。刚开始是看《javascript 框架设计》这本,这本入门非常棒。后来就是每写一个功能去看看其他框架是怎么做的,相关坑有哪些。目前压缩后代码有 70+ kb。
框架为 ie6 也提供了一部分 css3 选择器,比如:
morn('tag:odd');
morn('input[type=text]');
morn('tag:first-child');
morn('tag:last-child');
morn('tag > children');
morn('tag').find('selector');
关于兼容 css3 选择器实际上很考验词法解析,那些采用正则或者搜索的方法来做的引擎效率和正确性都不能保证,我当时正好在做 js 语法高亮引擎,正好用上了。
还有一些很有创意的东西,比如矩阵变换的辅助函数。
mornjs 是我一年多前的作品,代码在 github 上:github.com/icymorn/morn-js,第一次用 grunt 来组织项目,并且有详尽的代码注释,对个人提高还是蛮多的。刚开始是看《javascript 框架设计》这本,这本入门非常棒。后来就是每写一个功能去看看其他框架是怎么做的,相关坑有哪些。目前压缩后代码有 70+ kb。
框架为 ie6 也提供了一部分 css3 选择器,比如:
morn('tag:odd');
morn('input[type=text]');
morn('tag:first-child');
morn('tag:last-child');
morn('tag > children');
morn('tag').find('selector');
关于兼容 css3 选择器实际上很考验词法解析,那些采用正则或者搜索的方法来做的引擎效率和正确性都不能保证,我当时正好在做 js 语法高亮引擎,正好用上了。
还有一些很有创意的东西,比如矩阵变换的辅助函数。

