# CL_Loader.js **Repository Path**: luchg/CL_Loader.js ## Basic Information - **Project Name**: CL_Loader.js - **Description**: js、css文件按需加载管理引擎 - **Primary Language**: JavaScript - **License**: Apache-2.0 - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 10 - **Forks**: 5 - **Created**: 2014-11-21 - **Last Updated**: 2024-03-27 ## Categories & Tags **Categories**: javascript-toolkits **Tags**: None ## README # js、css文件按需加载管理引擎 这是一款支持将日常js文件按需加载化的管理引擎,适时加载js、css,减少发往服务器的请求量,优化页面加载速度的同时,提高用户体验。 ## 基本用法 ```javascript /* * 会自动加载filename.js文件,并在加载完成后执行run里面的函数 */ Loader.js("filename.js").run(function(){ alert("加载完成"); }); ``` ## Api ## License CL_Loader.js遵循[apache2.0](http://www.apache.org/licenses/LICENSE-2.0)协议发布 ## 更新日志 ### 1.2.3 * 修复并行加载时候报undefined的问题 ### 1.2.2 * 修复包定义时,依赖多个包会引发异常的问题 * 修复控制台不能输出异常信息的问题 * 修复通过恶意操作输入错误的包名时异常信息没正常显示的问题 ### 1.2.1 * 包定义功能新增支持批量定义 * 修复日期错写2014的问题 ### 1.2.0 * 新增Loader.version获取加载器版本号 * 废除多余的别名 * 修复控制台的一处可能会出现的bug * 精简队列引擎 * 新增缓存机制,已加载过的js、css将被记录下载,下次依赖时将不重新加载(可以通过设置cache方法让其继续重新加载) * 新增cache方法设置是否不使用缓存(注意:缺省为使用缓存,而1.2.0以前的版本为不缓存) * 文件属性新增cache属性真的当前单个文件设置是否不启用缓存 * 重构包的逻辑,使得包的使用更加人性化,重构后的包将遵守字面意义上的包概念 * 概念:包就是一堆js、css文件的合集,它的存在就是为了减少繁琐的批量js、css添加 * 包不再被强行缓存,继而取代的是cache方法,同时还支持针对包中的单个js文件设置cache实现部分缓存而部分不缓存 * 由于包概念的变更,不再有loading、loaded、pending、finished事件属性,同时增加onafter、onbefore属性监听包的加载 * 修复队列上的一处不明显bug:空队列无法上锁的问题 ### 1.1.x - 1.2.0 升级提示: * 由于废除了多余的别名,因此部分方法名需要更换:(无需担心,一模一样的效果) * start -> run * script -> js * link -> css * package、pkg -> use * 包定义中rely属性已增加新别名require,建议更换使用require,以后版本会废弃rely而使用require取代 * 包定义中原有的事件监听已不再支持 * 因新增的缓存机制,如多次执行Loader.js("filename.js").run(); 时候,filename.js只会执行一次,如果您的代码中需要该脚本多次执行,则可通过设置cache禁止缓存以解决: * Loader.cache(false).js("filename.js").run(); ### 1.1.5 `2014-12-18` * 【修复】修复在CL_Loader.js文件采用异步加载时ready方法不起作用的问题 * 【新增】新增对RequireJS、SeaJS、GlightJS、NodeJS的支持 ### 1.1.4 * 【修复】修复一处加载逻辑BUG * 【优化】优化类型判断,使代码更严谨 ### 1.1.3 * 【优化】优化类型判断,使代码更严谨 ### 1.1.2 * 【新增】恢复CSS加载监控,采用新方法监听CSS文件的加载状态,终于解决在CSS没加载完成就执行触发run的问题啦~(CSS加载失败与否不会终止程序的执行) * 【新增】依赖包可以使用优雅的use方法取代难看的package和pkg啦~ * 【优化】优化文件加载方式,从此CL_Loader文件也可以使用异步加载啦,同时加载的js文件会及时清除,不会再在DOM树上留痕啦~ ### 1.1.1 * 【新增】包定义新增包依赖参数rely,实现直接在定义包的时候定义依赖关系,使用时不再需要依赖需要某包所需要依赖的包,妈妈再也不用担心模块包依赖太多,使用起来太过混乱啦~ * 例:jquery、tab两个包,tab需要jquery的支持,为此,在之前的版本中,我们一般需要喝么写: L.pkg("jquery","tab").run(...); 但是有没有觉得逻辑不是很好?自己写的还好,要是给其它同事伙伴去看的话,他们会知道tab包是要依赖的么?可能他只是以为你的下文需要使用jquery包而已呢。 1.1.1新增包与包的依赖功能后,你只需要这么写就可以了: L.pkg("tab").run(...);//jquery会因为tab的依赖而自动加载 * 【优化】优化包依赖方法参数,终于支持用数组传参啦~~ ### 1.1.0 * 回炉重构,大幅度优化修改逻辑。部分用法改变 * 【优化】files方法更换为add方法,同时用法也变化,详情参阅api文档 * 【优化】add方法支持可变长参数,支持传递字符串、对象、数组 * 【优化】文件的加载顺序不再区分css和js,统一以添加顺序加载,css会绕过加载等待直接进入加载下一项 * 【优化】define定义模块包方法根据add方法也进行了加强,当判断模块包是否存在时,模块包存在则返回模块包的对象,不存在则返回false,详情参阅api文档 * 【优化】ready方法根据run方法也发生变化,规则还是一样与run相投,只是它会等待到DOM加载完后才会执行加载 * 【优化】重构run方法,新增别名start,并且不再受最多三参数的约制,可任意长参数,同样无顺序限制,以参数类型区分, * string、object、array类型当文件添加,number类型设置delay,boolean类型设置queue, * function类型设置回调函数。同时,文件添加可重复传入,会统一添加到加载队列, * 其它的重复传入的话,后者会覆盖前者 * 【优化】针对单独文件设置编码后,将不受Loader的charset控制,Loader的charset定义为设置缺省文件编码 * 【新增】css、js方法新增加可传递对象,可设置文件编码,同时css方法新增link别名,js方法新增script别名 * 【新增】添加的文件也可单独对文件设置编码 * 【新增】style方法,即时添加css样式(即时生效,非加载文件) * 【删除】废除css加载监控,因为无需判断文件加载是否正确,而且css的加载顺序并不影响程序的正常运转,采用img监控法会阻塞运行,也会增加浏览器负担 * 【删除】废除error方法,同时模块包的error方法一并废除,此方法存在兼容问题,并且浏览器产生的错误也不准确,因而废弃 * 【删除】废除id方法,此方法性能低下,除非开发者对自己代码没信心,不然此方法永远也不会用到,另外ready方法能让代码执行效率更高,故而废弃 ### 1.0.2 * 废除img监控css加载,因没必要且会严重堵塞流程,故而不再进行监控css是否加载完成 * 重构加载流程,解决ie浏览器因缓存而导致出现文件还没正式加载完成就执行回调的问题