分爲4塊:
A : index.html殼子。 加載B init-config.js, 加載D header.html模板
B : init-config.js 我的信息+路由配置+權限+渲染單頁。 加載C navMenu.js
C: navMenu.js 處理頭部+處理中間模板+總菜單。返回給B init-config.js
D: header.html模板。模板的做用,整個頁面大部分除掉單頁
css
一個空殼子,這個上面include進:header.html, require.js, init-config.js, html
加進了全部的css,,,,配置了gulp打包的build,替換壓縮後的文件,加入了百度統計gulp
這個配置了:瀏覽器
Require.js的配置config
路由的map( 鍵 和 path路徑+permission),架構
拿用戶信息接口,返回了用戶角色,姓名,權限碼,存全局變量ui
Director.js的init方法,初始化路由spa
方法1,將路由map轉化爲對象,規則爲:/aaa:function(){},鍵-方法,,鍵方法對,組合規則是directors的用法設計
方法2,即路由鍵對應的執行方法,當瀏覽器地址欄出現某/hash值的時候,獲取此hash的路由map條目,拿到permission,cdn
用戶接口返回值判斷是否登陸-----》sso,htm
判斷權限(permission與用戶接口權限碼,利用shiro-trie)------》403頁,
去執行navMenujs拿到返回值-----》中間模板right。執行init方法(C模板介紹見後)
Ajax請求map的path路徑的單頁面,-------》渲染單頁,根據right,是right.html(單頁)或
CommonBus.html(單頁),這個根據頁面挖空的結構來。
配置全部工程的https://域名./
配置全部的菜單
清空container元素,移除全部監聽
頭部,登陸,退出,用戶名,遊客的顯示處理,監聽登陸/退出事件,-----》sso/首頁
渲染頭部模板,根據默認總菜單
渲染中間模板
渲染中間模板根據方法X
方法X:根據init傳來的hash,window得來,拿到全部的一級菜單,二級菜單,三級菜單
全部二級菜單即各個工程,全部的頁面,
整個頁面(頭部導航+中間模板(麪包屑+左側三級菜單等等))大部分都是這裏拼的模板
NavMenu.js全部工程公用,配置了總工程的菜單總表
單個工程如:investor的init-config.js只配置本身的map路由表
每一個工程都有一個相同殼子A模塊,每一個工程有一個域名,每一個工程有本身的路由表,每一個工程有init-config。Js
即:A模塊B模塊各子工程具備本身的,
C模塊D模塊公用,放cdn。
C模塊只做一個模塊,define(‘C模塊名’,【引用】,function(){});amd規範
D模塊:公用,包括了各子工程的模板,nevMenu會根據哪一個工程,渲染哪一個工程的模板
頭部導航幾乎全部子工程能夠公用模板。可是各子工程中間塊設計不同,全部有各自的中間模板。