動態引入技術的設計,對咱們來講很是重要。前端
同時也說明動態語言的使用對咱們來講也是很是重要。api
沒有動態語言的支撐,有些想法可能不容易實現,或者有替代方案,可能會花更大的代價。框架
前端開發框架咱們規劃設計了 apis文件夾編碼
這個文件夾是用來存放全部的api定義的spa
規範要求設計
全部的api定義都是名動詞開發
同時按照各個實體分別創建對應的js文件產品
例如 Contract.js 裏面就是關於合同的相關 apiit
例如 Company.js 裏面就是關於公司的相關 api後臺
Contract.js 裏面就是
ContractLoad 合同加載
ContractSave 合同保存
ContractDelete 合同刪除
ContractSearch 合同查詢
ContractApply 合同申請
ContractBack 合同退回
……
規範就是所有放在 apis文件夾內
軟件項目是動態變化,
如上一開始規模可能不是那麼大的時候這個10幾個js都放一個目錄裏面是沒有任何問題的。
問題是隨着時間的變化,項目的變化,可能又有10個
這時候這個文件夾裏面的內容有點多,那麼感受須要有子文件夾進行分門別類的管理會更好。
可是這些js都是被具體的某個頁面,或者多個頁面引用的。
從代碼重構的角度看,從新規劃下目錄結構是很是合適的。
可是,可能考慮到同時又要調整
可能存在多個頁面都引用這個js,那麼就很是容易形成修改遺漏的狀況發生。
若是可以作到頁面引用和文件位置不相關就行了。
若是這樣的話,就能夠根據須要,嘗試不斷的調整。
爲何要調整,這個重構的須要,動態發展變化的須要。
不能歸結於一開始沒有規劃到位的問題,在當前的規模、當時的狀況是很是到位的。
若是可以作到位置和引用無關,那麼咱們的重構才能得以實施。不然只能看着代碼一天一天發展成本身討厭的樣子。
引用地址以下
如何才能作到,不相關,這就成了設計的關鍵。
爲了達到這個終極目標。
不相關,意思就是可能哪天放A目錄、哪天感受不合適調整到B目錄
這是一個動態的,那麼這塊的引入也就須要設計成動態的,不能如上圖靜態硬編碼了。
如何實現動態
敏捷開發框架提供以下的加載方式
Apis.Load 後臺動態加載
業務頁面只管,我這個頁面須要用到 RuleCompany.js
那麼就如上寫,徹底不關心,這個 js文件的位置,框架自動幫忙搞定。
若是一個頁面依賴多個呢,以下圖,逗號分隔。
如上圖,咱們的業務代碼就和apis js 文件的位置實現瞭解耦。
要想正確運行,運行時,確定是要引用正確位置的文件。
這所有交給框架的 ApiManager來管理。
ApiManager在應用程序初始化的時候,會自動收集全部 實體對應的js文件所在的目錄
建立一個Map地圖
Apis.Load 方法 根據運行時的Map 自動找尋到正確的路徑,保證項目的正確運行。
最後咱們的代碼以下,截幾個實際的例子:
如上圖,這是咱們的產品查詢畫面,產品查詢畫面須要調用產品相關的api 如 apis.ProductInfoSearch
apis.ProductInfoDelete
因此,咱們動態 Apis.Load("ProductInfo")
上圖是企業編輯畫面,Apis.Load("Enterprise")
引用和位置無關特性,爲將來通向將來設計了一條康莊大道,讓在apis管理上提供了重構的可能。
所謂的重構是 在須要的時候動手,不須要的時候不能過多的考慮,不然叫過分設計。
但須要留有修改的可能,Api js引用和位置無關特性就是預設的伏筆。