-
Notifications
You must be signed in to change notification settings - Fork 2
/
Kimjxframe.min.js
1 lines (1 loc) · 5.54 KB
/
Kimjxframe.min.js
1
window.KJ={CONFIG:{root:"",start:"app.js",pageroot:"pages/",appObject:"Kim",defaultframe:"main/main",defaultpage:"main/index",appdom:document.createElement("div"),runmode:"js",Templatemode:"default",TemplatemodeAPI:"",cachevesion:"",cachevesionkey:"kv",fileTagReg:/<(K-FILE)[^>]*>/gi,fileTag:"K-FILE"},EVENT:{hashchange:{}},JSCACHE:{},CSSCAHCE:{},HASH:{},LOADERCALLBACK:{},APP:{},APPLIST:[],DOMRENDER:{},init:function(e){var n=KJ;for(var t in e)n.CONFIG[t]=e[t];Object.defineProperties(KJ,{cachevesionkey:{get:function(){return KJ.CONFIG.cachevesionkey},set:function(e){KJ.CONFIG.cachevesionkey=e}},cachevesion:{get:function(){return KJ.CONFIG.cachevesion},set:function(e){KJ.CONFIG.cachevesion=e}}}),window.addEventListener("hashchange",n.Fnhashchange,!1),document.body.appendChild(n.CONFIG.appdom),n.Fnloader(n.CONFIG.start)},Fneventdeal:function(e,n){var t=KJ;for(var o in t.EVENT[e])n?t.EVENT[e][o](n):t.EVENT[e][o]()},Fnregistevent:function(e,n){var t=KJ,o=(new Date).getTime()+""+parseInt(1e4*Math.random());return t.EVENT[e]||(t.EVENT[e]={}),t.EVENT[e][o]=n,o},Fnunregistevent:function(e,n){return delete this.EVENT[e][n],!0},Fnloader:function(e,n){var t=KJ,o=t.CONFIG.root+e;t.Fnloadjs(o,function(){n&&n()})},Fnpageloader:function(e,n){var t,o=e.split("."),a=KJ;o.length>1?t=o[o.length-1]:e=e+"."+(t=a.CONFIG.runmode),"js"==t?a.FngetJsTemplate(e,n):a.FngetTemplate(e,n)},FnmultyPageLoader:function(e,n){if(e.length<=0)n();else{var t=e.length,o=0,a=function(){KJ.Fnpageloader(e[o],function(){++o>=t?n():a()})};a()}},FngetJsTemplate:function(e,n){var t,o=KJ;t="api"==o.CONFIG.Templatemode?o.CONFIG.root+o.CONFIG.pageroot+o.CONFIG.TemplatemodeAPI+"?page="+e+"&runmode=js":o.CONFIG.root+o.CONFIG.pageroot+e,KJ.Fnloadjs(t,function(){n&&n()})},FngetTemplate:function(e,n,t){var o=KJ;if(o.APP[e])n&&n();else{var a;a="api"==o.CONFIG.Templatemode?o.CONFIG.root+o.CONFIG.pageroot+o.CONFIG.TemplatemodeAPI+"?page="+e+"&runmode=html":e.split("?").length>1?o.CONFIG.root+o.CONFIG.pageroot+e+(KJ.CONFIG.cachevesion?"&"+KJ.CONFIG.cachevesionkey+"="+KJ.CONFIG.cachevesion:""):o.CONFIG.root+o.CONFIG.pageroot+e+(KJ.CONFIG.cachevesion?"?"+KJ.CONFIG.cachevesionkey+"="+KJ.CONFIG.cachevesion:"");var r=new XMLHttpRequest;r.open("get",a,!0),r.onload=function(){r.status>=200&&r.status<300||0===r.status?o.Fnregistpage(r.responseText,function(){n&&n()},e):t?t():o.Fnregistpage("页面加载失败, errCode:"+r.status,function(){n&&n()},e)},r.send("")}},getApp:function(e){return e.split(".").length<=1&&(e=e+"."+KJ.CONFIG.runmode),KJ.APP[e]},Fnuse:function(e,n,t){var o=KJ,a=0,r=function(){a>=e.length?n&&n():"css"==e[a][1]?o.Fnloadcss(e[a][0],function(){a++,r()}):"js"==e[a][1]&&o.Fnloadjs(e[a][0],function(){a++,r()})};t?function(){for(var t=0;t<e.length;t++)"css"==e[t][1]?o.Fnloadcss(e[t][0],function(){++a>=e.length&&n&&n()}):"js"==e[t][1]&&o.Fnloadjs(e[t][0],function(){++a>=e.length&&n&&n()})}():r()},Fnloadjs:function(e,n,t){var o=KJ;if(o.LOADERCALLBACK[e]||(o.LOADERCALLBACK[e]=[]),2==o.JSCACHE[e])return n&&n(),!1;if(1==o.JSCACHE[e])return o.LOADERCALLBACK[e].push(n),!1;o.LOADERCALLBACK[e].push(n),o.JSCACHE[e]=1;var a=o.Fncel("script");a.onload=function(){for(var n in o.JSCACHE[e]=2,o.LOADERCALLBACK[e])o.LOADERCALLBACK[e][n]();delete o.LOADERCALLBACK[e],document.body.removeChild(a)},a.onerror=function(){t?t():console.error([e,"加载失败!"])},e.split("?").length>1?a.src=e+(KJ.CONFIG.cachevesion?"&"+KJ.CONFIG.cachevesionkey+"="+KJ.CONFIG.cachevesion:""):a.src=e+(KJ.CONFIG.cachevesion?"?"+KJ.CONFIG.cachevesionkey+"="+KJ.CONFIG.cachevesion:""),document.body.appendChild(a)},Fnloadcss:function(e,n){var t=KJ;if(t.LOADERCALLBACK[e]||(t.LOADERCALLBACK[e]=[]),2==t.CSSCAHCE[e])return n&&n(),!1;t.LOADERCALLBACK[e].push(n),t.CSSCAHCE[e]=1;var o=t.Fncel("link");o.rel="stylesheet",o.onload=function(){for(var n in t.LOADERCALLBACK[e])t.LOADERCALLBACK[e][n]();t.CSSCAHCE[e]=2,delete t.LOADERCALLBACK[e]},o.onerror=function(){console.error([e,"加载失败!"])},o.href=e+(KJ.CONFIG.cachevesion?"?"+KJ.CONFIG.cachevesionkey+"="+KJ.CONFIG.cachevesion:""),document.head.appendChild(o)},Fncel:function(e){return document.createElement(e)},FnFileExtendsDeal:function(e){return e.split(".").length<=1&&(e=e+"."+KJ.CONFIG.runmode),e},Fnregistpage:function(e,n,t){var o=KJ,a=t||o.HASH.page;a.split(".").length<=1&&(a=a+"."+KJ.CONFIG.runmode),o.FntemplateFileDeal(e,function(e){o.APP[a]=e,n&&n()},a)},FntemplateFileDeal:function(e,n,t){var o=KJ,a=KJ.Fncel("div"),r=e.match(KJ.CONFIG.fileTagReg),i=[],c="";if(t){var l=t.split("/");l.reverse(),l.splice(0,1),l.reverse(),c=l.join("/")}if(r&&r.length>0){a.innerHTML=r.join("");for(var s=a.querySelectorAll(KJ.CONFIG.fileTag),C=0;C<s.length;C++){var F=s[C].getAttribute("file").split("/");"."==F[0]&&(F[0]=c),i.push(F.join("/"))}KJ.FnmultyPageLoader(i,function(){for(var t=0;t<r.length;t++){var a=o.FnFileExtendsDeal(i[t]);e=e.replace(r[t],o.APP[a])}n(e)})}else n(e)},FngetGet:function(e){var n={},t=e.split("?");t=t.length>1?t[1].split("&"):[];for(var o=0;o<t.length;o++){var a=t[o].split("=");a.length>0&&""!=a[0]&&""!=a[1]&&(1==a.length&&(a[1]=""),n[a[0]]=decodeURIComponent(a[1]))}return n},Fnhashchange:function(e){var n=KJ;e&&e.newURL?(n.HASH.rawURL=e?e.newURL:location.href,n.HASH.oldURL=e?e.oldURL:location.href):(n.HASH.oldURL=n.HASH.rawURL?n.HASH.rawURL:"",n.HASH.rawURL=location.href);var t=n.HASH.rawURL.split("#"),o=t.length>1&&t[1].split("?")[0];n.HASH.page=o||n.CONFIG.defaultpage,n.HASH.GET=n.FngetGet(t.length>1?t[1]:""),n.Fneventdeal("hashchange",{e:e,hash:n.HASH})},Fncleardocument:function(e,n){for(var t=e.querySelectorAll("*"),o=0;o<t.length;o++)t[o].parentNode.removeChild(t[o]);n&&e.parentNode.removeChild(e)}};