读 requirejs 相关细则

it2022-05-06  28

一、requirejs初始化执行流程 1 if (isBrowser)2 req(cfg)3 context.configure()4 context.require(cfg.deps || [], cfg.callback)5 resume()6 req.load7 req.attach(url, context, moduleName); 二、require()细节 1 可通过require.config方法配置baseUrl2 文件名一般不用加".js",如果有".js"文件一定是与引入requirejs的html在同一个目录  三、够狠,一个newContext方法,有1k多行 四、require流程 1 require([xx], fn)2 context.require(deps, callback, relModuleMap)3 main(null, deps, callback, relModuleMap);4 makeModuleMap(depArg, (name ? moduleMap : relModuleMap)) 每次调用生成 module对象{prefix:name:parentMap:url:originalName:fullName:}5 getManager(map, shouldQueue) 生成的manager结构如下manager = {id:map: map, // 为上面makeModuleMap结构depCount: 0,depDone: [],depCallbacks: [],deps: [],listeners: [],22722add: managerAdd};6 resume()7 req.load(context, fullName, url);8 req.attach(url, context, moduleName);9 req.addScriptToDom(node); callback1 req.onScriptLoad2 context.completeLoad(moduleName);3 callDefMain4 main(name, deps, callback)5 execManager(manager)6 五、configurePackageDir函数在context.configure调用。即配置requirejs时。 六、context.defined 中存储各个模块  十、瑕疵1 requirejs/define/resume 多余的 return undefined2 req.execCb 多余的参数name3 forceExec/checkLoaded return undefined 改为 return; 最后的return undefined去掉  十一、剃掉的1 isBrowser 非浏览器环境的支持2 r.js 相关代码3 requireWait 标示符 / 佳璐说是模拟script的load4 queueDependency 内仅一行,仅被调用一次(getManager中)

转载于:https://www.cnblogs.com/litao229/archive/2012/04/13/2446194.html

相关资源:数据结构—成绩单生成器

最新回复(0)