一年前,刚来网易实习的时候接触了NEJ,那是第一次接触模块化开发,感觉想出这个idea的人简直是天才,同时也对于这种框架的实现非常好奇,惭愧的是,那时甚至连jQuery的原理都不知道。

随着这一年对于JS面向对象的理解有所加深,看着《JavaScript设计模式》就跟着自己动手码码代码,所以这是一篇读书笔记,并不是发明创造,并且这个加载器是比较简陋的,很有改进空间。

模块的长相

模块采用的是匿名模块,它的js绝对路径作为它的惟一标识:

define([    '{lib}dom',    '{pro}extend'    ], function(dom, extend) {    //TODO})

异步加载的思路

从上面我们可以看出,模块是由define函数来定义,传入参数为:依赖列表和回调函数,为了实现依赖注入,要等到依赖列表的所有js加载完后再来执行回调函数。

所以第一步,我们循环遍历依赖列表,然后依次加载列表的模块,可想而知,在循环遍历加载模块的代码的结构应该是下面这样子的:

//modules = ['lib/dom