日期:2014-05-16 浏览次数:20536 次
在模块化开发中,一个模块可以依赖于任意个模块,而被它依赖的模块又可以依赖于任意个其他模块。这就要求加载模块时必须一层一层把所有依赖的模块都加载进来,类似于树的遍历。由于前端动态加载JS的过程是异步的,也就是说,这是异步的遍历。在算法上,jRaiser Loader采取自顶向下的遍历方式以及自底向上的通知方式。假设有A、B、C三个模块,A依赖于B,B依赖于C。当通过jRaiser.use加载A模块时,其加载过程如下(红色箭头部分为异步流程):
jRaiser Loader的功能主要由四个类协作完成,其中最核心的是Module类。
Module对象有两种,一种表示功能接口模块,另一种表示需要执行的任务模块。前者通过define()创建,id为该模块的路径;后者通过jRaiser.use()创建,id为“#自动编号”。通过isTask方法可以知道该对象是否任务模块。
当加载模块定义文件时,该文件调用的define()就会创建Module对象。Module类的构造函数有三个参数: