由于上一次的靈光一閃,萌生了對面向UI編程的思想實現(xiàn)。經(jīng)過一段時間的考慮和設計,現(xiàn)在將思想和具體細節(jié)記錄下來:
具體思路描述:
在UI.config文件中,配置所有參數(shù),比如頁面模板、所有組件、組件控制、接口注入
ui.js根據(jù)配置文件中所選擇的模板,進入布局模板庫中找到所加載的模板
將模板首先注入頁面之中。
ui.js分析頁面模板布局中所需要加載的組件以及其他操作,將這些組件數(shù)據(jù)注入到數(shù)據(jù)中轉(zhuǎn)池
然后數(shù)據(jù)中轉(zhuǎn)池,將組件信息傳遞給ui.js,需要哪些組件和操作
ui.js將中轉(zhuǎn)池傳過來的組件信息通過配置文件從組件庫中去尋找
尋找到模板所需組件注入頁面,數(shù)據(jù)中轉(zhuǎn)池配合組件的js,對組件進行初始化。直到頁面加載完成
配置文件的配置設計:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 | UI.config=({ //配置路徑 baseUrl: "/" , //注入模塊 template:{ //布局模板名稱:模板地址+是否裝載 "layout1" :[ "layout/layout1.tpl" , true ], "layout2" :[ "layout/layout1.tpl" , false ] }, //注入接口 interface :{ "interface1" : "www.123.com/interface1" , "interface2" : "www.123.com/interface2" , "interface3" : "www.123.com/interface3" , "interface4" : "www.123.com/interface4" , "interface5" : "www.123.com/interface5" , }, //注入組件 module:{ //組件名:組件地址+組件是否裝載+接口注入 "md1" :[ "module/header.mold" , true ,[ "interface1" , "interface2" ]], "md2" :[ "module/body.mold" , true ,[ "interface1" , "interface2" ]] }, //組件邏輯js data:{ //js所需接口和其他數(shù)據(jù)都需數(shù)據(jù)中轉(zhuǎn)池配合 "md1_js" : "modulejs/md1.js" } }); |
數(shù)據(jù)中轉(zhuǎn)池設計思路:
具體思路描述:
每個組件在配置文件中生成之后,導入ui.js中處理后,會生成每個組件對應的uuid(唯一標識)
在進行數(shù)據(jù)流轉(zhuǎn)和互通的時候,必須通過uuid進行存儲和使用
對于只使用一次和永久存放的數(shù)據(jù)進行標記和回收
配合組件進行變更,組件加載數(shù)據(jù)加載,組件卸載數(shù)據(jù)卸載
...
面向UI思想框架優(yōu)勢:
高度復用html,如果一個更通用的模板,可以無限次復用(可以更換接口)
靈活變更網(wǎng)頁布局。傳統(tǒng)頁面都是布局好了之后無法變更,UI引入布局模板,可以隨意進行布局,只要最后引入組件正確即可
對所有接口進行了統(tǒng)一管理,每個組件進行分別注入,按需使用
可進行全球分布協(xié)作開發(fā),每個組件配置地址可以在互聯(lián)網(wǎng)的任何角落,我只需要按著地址可以取到我的組件和處理js即可
可一個項目,由互聯(lián)網(wǎng)上各處的組件拼湊完成,如果后臺可支持跨域,那么一個項目前后臺都可是互聯(lián)網(wǎng)上的資源,而我們部署的服務器只是提供一個展示入口
開發(fā)只需要專注每個組件開發(fā)即可,一個一個組件開發(fā),開發(fā)完成通過配置裝載上線
對于項目局部進行更新,可直接卸載一個組件,不需要關閉整個服務器。更新完成之后,更新組件,重新裝載上線
每個企業(yè)可維護自己的一套組件庫,高度復用。新項目如果遇到以前開發(fā)過的組件直接配置路徑和參數(shù)使用。
可將配置文件參數(shù)通過后臺獲取,動態(tài)維護所有組件。方便運維
對于接盤俠(維護人員)來說,有更方便和快捷的方式進行處理(局部組件開發(fā)規(guī)范參考自我總結(jié)的高效開發(fā)和維護方案)
更使用于單頁應用,因為只有針對于局部刷新,加載速度比一般網(wǎng)頁速度更快
...我唯一能想到的就這么多,我會將這個項目開源,希望更多的志同道合的人,一起開發(fā)更強大的UI.js
PS:現(xiàn)在只是對思路做一個詳細設計,在開發(fā)中可能會遇到各種各樣的問題,而且該思路是我的第一次起草,可能不是很完善,如果大家有更好的思想和靈感,希望大家不吝賜教。這段時間先把基礎版本寫好,然后公布成開源項目出去,以后歡迎大家一起完善。
下面是我的手稿:
我是碼農(nóng),我不喜歡被代碼玩弄,我喜歡用代碼去改變世界,希望這世界更美好?。。〖佑?,共勉?。。?!