前言
首先说明一下,本书虽是讲解框架设计,但写个框架不是很深奥的事情,重点是建立更为完整的前端知识树。只有自己尝试写个框架,才有机会接触像原型、作用域、事件代理、缓存系统、定时器等深层知识,也才有机会了解applyElement、swapNode、importNode、removeNode、replaceNode、insertAdjacentHTML、createContextualFragment、runtimeStyle等偏门API,也才会知晓像getElementById、getElementsByTagName、setAttribute、innerHTML存在大量的Bug,当然你也可以尝试最近几年浏览器带来的新API(包括ECMA262v5、v6、HTML5或大量误认为是HTML5的新模块),如Object.defineProperty、CSS.supports、WebKitShadowRoot、getDefaultComputedStyle……
虽然这难免落入“造轮子”的怪圈中,但“造轮子”在这世界却是出奇普遍。一般创造性的活动,一开始都是临摹他人的作品。就算不“造轮子”,也要收集一大堆“轮子”,作家有他的素材集,设计师有大量icon与笔刷,普通的“码农”也有个commonjs存放着一些常用的函数。以前的程序员们,经常会为了做一个数据处理程序而自己开发一门编程语言。如Charls Moore,他在美国国家天文台做射电望远镜数据提取程序时开发了Forth;高德纳为了让自己写的书排版漂亮些,写了TeX;DHH为了做网站写了Rails……如果连写一个控件都要百度或Google查找答案,那水平不容易提高。
当前很少有技术书教你写框架的,即便是众多的Java类图书,大多数也是教你如何深入了解SHH的运作机理。
如果你是这两三年才接触JavaScript,那恭喜你了。现在JavaScript的应用洪荒时代已经过去,Portotype.js的幕府“统治”也已结果,且已迎来非常强势的jQuery纪元,有大量现成的插件可用,许多公司都用jQuery,意味着我们的技术有了用武之地。
但事实上还是要通过调试程序获得经验,只从JavaScript书上学习的那些知识点没法明白jQuery的源代码。
许多大公司的架构师根据技术发展的情况,他们都有自己一套或几套JavaScript底层库,各个部门视情况还发展针对于自己业务的UI库。而企业开发中,UI库就像流水线那样重要。而底层库只是一个好用的“锤子”或“胶钳”。要想迅速上手这么多公司框架,基础知识无疑是非常重要的。假若之前自己写过框架,那就有了经验。道理是一样的,框架设计的一些“套路”肯定存在的。本书就是把这些“潜规则”公开出来,迅速让自己成长为技术达人。
目录
第 1 章 种子模块
1.1 命名空间
1.2 对象扩展
1.3 数组化
1.4 类型的判定
1.5 主流框架引入的机制——domReady
1.6 无冲突处理
第 2 章 模块加载系统
2.1 AMD规范
2.2 加载器所在路径的探知
2.3 require方法
2.4 define方法