由于上一次的靈光一閃,萌生了對(duì)面向UI編程的思想實(shí)現(xiàn)。經(jīng)過一段時(shí)間的考慮和設(shè)計(jì),現(xiàn)在將思想和具體細(xì)節(jié)記錄下來:

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

具體思路描述:

  1. 在UI.config文件中,配置所有參數(shù),比如頁(yè)面模板、所有組件、組件控制、接口注入

  2. ui.js根據(jù)配置文件中所選擇的模板,進(jìn)入布局模板庫(kù)中找到所加載的模板

  3. 將模板首先注入頁(yè)面之中。

  4. ui.js分析頁(yè)面模板布局中所需要加載的組件以及其他操作,將這些組件數(shù)據(jù)注入到數(shù)據(jù)中轉(zhuǎn)池

  5. 然后數(shù)據(jù)中轉(zhuǎn)池,將組件信息傳遞給ui.js,需要哪些組件和操作

  6. ui.js將中轉(zhuǎn)池傳過來的組件信息通過配置文件從組件庫(kù)中去尋找

  7. 尋找到模板所需組件注入頁(yè)面,數(shù)據(jù)中轉(zhuǎn)池配合組件的js,對(duì)組件進(jìn)行初始化。直到頁(yè)面加載完成

 

配置文件的配置設(shè)計(jì):

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)池設(shè)計(jì)思路:

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

具體思路描述:

  1. 每個(gè)組件在配置文件中生成之后,導(dǎo)入ui.js中處理后,會(huì)生成每個(gè)組件對(duì)應(yīng)的uuid(唯一標(biāo)識(shí))

  2. 在進(jìn)行數(shù)據(jù)流轉(zhuǎn)和互通的時(shí)候,必須通過uuid進(jìn)行存儲(chǔ)和使用

  3. 對(duì)于只使用一次和永久存放的數(shù)據(jù)進(jìn)行標(biāo)記和回收

  4. 配合組件進(jìn)行變更,組件加載數(shù)據(jù)加載,組件卸載數(shù)據(jù)卸載

  5. ...

 

面向UI思想框架優(yōu)勢(shì):

  1. 高度復(fù)用html,如果一個(gè)更通用的模板,可以無(wú)限次復(fù)用(可以更換接口)

  2. 靈活變更網(wǎng)頁(yè)布局。傳統(tǒng)頁(yè)面都是布局好了之后無(wú)法變更,UI引入布局模板,可以隨意進(jìn)行布局,只要最后引入組件正確即可

  3. 對(duì)所有接口進(jìn)行了統(tǒng)一管理,每個(gè)組件進(jìn)行分別注入,按需使用

  4. 可進(jìn)行全球分布協(xié)作開發(fā),每個(gè)組件配置地址可以在互聯(lián)網(wǎng)的任何角落,我只需要按著地址可以取到我的組件和處理js即可

  5. 可一個(gè)項(xiàng)目,由互聯(lián)網(wǎng)上各處的組件拼湊完成,如果后臺(tái)可支持跨域,那么一個(gè)項(xiàng)目前后臺(tái)都可是互聯(lián)網(wǎng)上的資源,而我們部署的服務(wù)器只是提供一個(gè)展示入口

  6. 開發(fā)只需要專注每個(gè)組件開發(fā)即可,一個(gè)一個(gè)組件開發(fā),開發(fā)完成通過配置裝載上線

  7. 對(duì)于項(xiàng)目局部進(jìn)行更新,可直接卸載一個(gè)組件,不需要關(guān)閉整個(gè)服務(wù)器。更新完成之后,更新組件,重新裝載上線

  8. 每個(gè)企業(yè)可維護(hù)自己的一套組件庫(kù),高度復(fù)用。新項(xiàng)目如果遇到以前開發(fā)過的組件直接配置路徑和參數(shù)使用。

  9. 可將配置文件參數(shù)通過后臺(tái)獲取,動(dòng)態(tài)維護(hù)所有組件。方便運(yùn)維

  10. 對(duì)于接盤俠(維護(hù)人員)來說,有更方便和快捷的方式進(jìn)行處理(局部組件開發(fā)規(guī)范參考自我總結(jié)的高效開發(fā)和維護(hù)方案)

  11. 更使用于單頁(yè)應(yīng)用,因?yàn)橹挥嗅槍?duì)于局部刷新,加載速度比一般網(wǎng)頁(yè)速度更快

  12. ...我唯一能想到的就這么多,我會(huì)將這個(gè)項(xiàng)目開源,希望更多的志同道合的人,一起開發(fā)更強(qiáng)大的UI.js

 

 PS:現(xiàn)在只是對(duì)思路做一個(gè)詳細(xì)設(shè)計(jì),在開發(fā)中可能會(huì)遇到各種各樣的問題,而且該思路是我的第一次起草,可能不是很完善,如果大家有更好的思想和靈感,希望大家不吝賜教。這段時(shí)間先把基礎(chǔ)版本寫好,然后公布成開源項(xiàng)目出去,以后歡迎大家一起完善。

下面是我的手稿:

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

移動(dòng)開發(fā)培訓(xùn),Android培訓(xùn),安卓培訓(xùn),手機(jī)開發(fā)培訓(xùn),手機(jī)維修培訓(xùn),手機(jī)軟件培訓(xùn)

 

 

我是碼農(nóng),我不喜歡被代碼玩弄,我喜歡用代碼去改變世界,希望這世界更美好?。?!加油,共勉?。。。?/strong>