https://github.com/eccued/modulejs
modulejs是一款比seajs、commonjs更加简洁、小巧的javascript模块化开发管理工具。
1、进入页面执行runModuleJS方法,注册事件,读取缓存。其中的hookReadyFun方法,是监听模块是否都OK的。每加载完一个模块(网络下载完,会自动执行,而模块的方法名是define方法,define方法会发布module_ready的方法),都会回调次方法,会checkDepts,检查所有的模块是否准备OK。如果OK,则会执行入口Init方法。
2、define方法,modulejs定义此方法,所以加载完之后会自动执行,进入该方法。该方法主要作用是,解析依赖(使用正则表达式解析require("XX")),将所依赖的模块都记录下来,保存在当前模块的dependencies中。将该模块保存在全局变量cfg.modules中,然后发布该方法已经准备OK的消息。
3、require方法。这个是模块依赖方法,在自己的业务模块中都会使用到,这个require,除了上面根据这个关键词做正则,解析模块外,还有一个重要的作用就是从全局变量即所有的模块变量cfg.modules中,返回需要加载的模块的所有的export方法,这样的话,require的对象当中,就拥有需要加载的模块的所有的暴露的方法了。
4、loadModule,该方法就是加载js的方法了。使用script标签去加载js,无须监听加载结果,因为自动会执行,js的define方法,然后会触发module_ready消息。
5、checkDeps方法,在js加载外,发布module_ready消息的时候,会执行该方法,校验方式就是每一次会检查入口文件关联的所有的模块。直到全部OK已经加载完成,然后去执行入口方法。