動態引入技術的設計,對我們來說非常重要。 同時也說明動態語言的使用對我們來說也是非常重要。 沒有動態語言的支撐,有些想法可能不容易實現,或者有替代方案,可能會花更大的代價。 前端開發框架我們規劃設計了 apis文件夾 這個文件夾是用來存放所有的api定義的 規範要求 所有的api定義都是名動詞 同時 ...
動態引入技術的設計,對我們來說非常重要。
同時也說明動態語言的使用對我們來說也是非常重要。
沒有動態語言的支撐,有些想法可能不容易實現,或者有替代方案,可能會花更大的代價。
前端開發框架我們規劃設計了 apis文件夾
這個文件夾是用來存放所有的api定義的
規範要求
所有的api定義都是名動詞
同時按照各個實體分別建立對應的js文件
例如 Contract.js 裡面就是關於合同的相關 api
例如 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引用和位置無關特性就是預設的伏筆。