Rico.loadModule('Accordion');
Rico中有一个管理模块依赖的对象
moduleDependencies : { Accordion : ['ricoBehaviors.js','ricoEffects.js','ricoComponents.js'], Color : ['ricoStyles.js'], Corner : ['ricoStyles.js'], DragAndDrop: ['ricoStyles.js','ricoEffects.js','ricoDragDrop.js'], Effect : ['ricoEffects.js'], Calendar : ['ricoCalendar.js', 'ricoCalendar.css'], Tree : ['ricoTree.js', 'ricoTree.css'], ColorPicker: ['ricoColorPicker.js', 'ricoStyles.js', 'ricoColorPicker.css'], CustomMenu : ['ricoMenu.js', 'ricoMenu.css'], SimpleGrid : ['+Effect', 'ricoGridCommon.js', 'ricoGrid.css', 'ricoSimpleGrid.js'], LiveGridBasic : ['ricoGridCommon.js', 'ricoGrid.css', 'ricoBehaviors.js', 'ricoLiveGrid.js'], LiveGrid : ['+Effect', '+LiveGridBasic', 'ricoLiveGridControls.js'], LiveGridMenu : ['+CustomMenu', 'ricoLiveGridMenu.js'], LiveGridAjax : ['+LiveGrid', 'ricoLiveGridAjax.js'], LiveGridJSON : ['+LiveGridAjax', 'ricoLiveGridJSON.js'], LiveGridForms : ['+LiveGridAjax', '+LiveGridMenu', '+Accordion', '+Corner', 'ricoLiveGridForms.js', 'ricoLiveGridForms.css'], SpreadSheet : ['+SimpleGrid', 'ricoSheet.js', 'ricoSheet.css'] }
每次loadModule模块时,通过内部的include方法加载所需的js或css文档
loadModule
loadModule : function() { for (var a=0, length=arguments.length; a<length; a++) { var name=arguments[a]; var dep=this.moduleDependencies[name]; if (dep) { for (var i=0; i<dep.length; i++) { if (dep[i].substring(0,1)=='+') { this.loadModule(dep[i].slice(1)); } else { this.include(dep[i]); } } } else { this.include(name); } } }
include方法
include : function(filename) { if (this.loadedFiles[filename]) return; this.addPreloadMsg('include: '+filename); var ext = filename.substr(filename.lastIndexOf('.')+1); switch (ext.toLowerCase()) { case 'js': this.loadedFiles[filename]=filename.substring(0,4)=='rico' ? this.loadRequested : this.loadComplete; document.write("<script type='text/javascript' src='"+this.jsDir+filename+"'><\/script>"); return; case 'css': var el = document.createElement('link'); el.type = 'text/css'; el.rel = 'stylesheet'; el.href = this.cssDir+filename; this.loadedFiles[filename]=this.loadComplete; document.getElementsByTagName('head')[0].appendChild(el); return; } }