<kbd id="afajh"><form id="afajh"></form></kbd>
<strong id="afajh"><dl id="afajh"></dl></strong>
    <del id="afajh"><form id="afajh"></form></del>
        1. <th id="afajh"><progress id="afajh"></progress></th>
          <b id="afajh"><abbr id="afajh"></abbr></b>
          <th id="afajh"><progress id="afajh"></progress></th>

          DreamBox統(tǒng)一視圖開發(fā)框架

          聯(lián)合創(chuàng)作 · 2023-09-24 21:02

          DreamBox 是一個為客戶端打造的、具有動態(tài)化功能、性能優(yōu)秀的統(tǒng)一視圖開發(fā)框架。

          DreamBox 本身是一個視圖容器,容器內(nèi)部的內(nèi)容可以通過線上下發(fā)的方式任意動態(tài)化更新。而且并不集成運(yùn)行時虛擬機(jī),最大程度貼近原生開發(fā),沒有中間商吃內(nèi)存、耗性能。

          目標(biāo)

          DreamBox立志于能在雙端的原生視圖框架和運(yùn)行時之上搭建一個統(tǒng)一的、具備動態(tài)化能力、可以靈活擴(kuò)展的視圖開發(fā)框架,同時保持優(yōu)秀的運(yùn)行時性能,并不斷建設(shè)組件和落地生態(tài),降低50%的客戶端視圖開發(fā)工作量,讓開發(fā)人員騰出雙手做更多更有意義的事情。

          基本原理

          DreamBox選擇了:

          1. 仿照Android約束布局進(jìn)行DSL的初版定義,后期結(jié)合實(shí)際情況分支發(fā)展。這樣一來,大大降低Android開發(fā)者的學(xué)習(xí)門檻。另外,有限的DSL規(guī)則和屬性遠(yuǎn)比學(xué)習(xí)一門真正的語言來的更快,iOS開發(fā)同學(xué)的掌握速度也較快
          2. 不集成語言運(yùn)行時,進(jìn)行靜態(tài)解析。通過這種方式,讓DB的運(yùn)行時生命周期足夠短暫,避免依附View存活而帶來的持續(xù)的內(nèi)存消耗問題。另一方面,因?yàn)闆]有語言運(yùn)行時,動態(tài)解析的性能損耗大大降低

          粗粒度上,DreamBox通過以下幾個步驟完成了整體功能:

          1. 開發(fā)者編寫DSL
          2. 編譯器編譯DSL為DB Runtime可以接受的數(shù)據(jù)格式
          3. DB Runtime解析數(shù)據(jù)并映射為原生數(shù)據(jù)、綁定交互事件
          4. 原生運(yùn)行時進(jìn)行渲染并傳遞交互事件
          5. DB Runtime響應(yīng)交互事件做動作

          簡而言之,DreamBox定義了一套統(tǒng)一的DSL,在Android和iOS的原生視圖框架和運(yùn)行時的基礎(chǔ)上,搭建了另一個運(yùn)行時。這個運(yùn)行時生命周期短、內(nèi)存損耗小,將這一套DSL分別映射成兩個系統(tǒng)能夠接受的數(shù)據(jù),完成了展現(xiàn)一致、體驗(yàn)一致的視圖頁面。

          功能特性

          先通過一個Gif簡單認(rèn)識下

          DreamBox將一個視圖中的各種元素分為三類:

          1. 視圖元素,這類元素就是直接展示在用戶眼前的View。這類元素可以動態(tài)化改變其內(nèi)部屬性和外部布局
          2. 交互、回調(diào)元素,視圖的點(diǎn)擊、長按等交互事件或動作發(fā)生后的回調(diào)統(tǒng)稱為這類元素。它們是視圖背后交互邏輯的觸發(fā)點(diǎn)
          3. 動作元素,如網(wǎng)絡(luò)請求、日志、彈窗、打電話等等這些隱藏在視覺背后的、由交互、回調(diào)元素觸發(fā)的歸為此類

          比如:一個卡片的組成是圖片+按鈕,當(dāng)按鈕點(diǎn)擊時,跳轉(zhuǎn)另一個頁面。這句話中,圖片、按鈕以及他們的布局關(guān)系就是視覺元素,按鈕的點(diǎn)擊就是交互、回調(diào)元素,最后的跳轉(zhuǎn)就是動作元素。

          DreamBox所支持的功能特性有:

          1. 支持視圖元素的復(fù)雜約束關(guān)系布局,每一個元素可以在橫縱坐標(biāo)軸上相對于其他元素進(jìn)行標(biāo)記定位,相比flex這能支持一些更復(fù)雜的場景需求
          2. 不僅僅是視圖元素,支持對以上三個元素都進(jìn)行動態(tài)修改
          3. 支持三方進(jìn)行DSL擴(kuò)展,以適應(yīng)更加復(fù)雜、更加具體的需求場景
          4. 支持通過Event API與原生運(yùn)行時進(jìn)行雙工通信,滿足一些DB框架無法滿足的功能需求
          5. 支持通過Playgrounddebug-tool的集成達(dá)成實(shí)時調(diào)試預(yù)覽的效果
          6. 支持單個App中多個引擎實(shí)例集成,互不干擾
          7. 支持復(fù)雜的數(shù)據(jù)使用場景,包含內(nèi)置固定、二次請求以及原生透傳
          8. 內(nèi)置10余個視圖組件,包含列表和流式布局
          9. 內(nèi)置10余個動作功能,部分基礎(chǔ)功能接入方可以自行接管具體實(shí)現(xiàn)
          10. 細(xì)粒度低至View,可在頁面中自由嵌入使用

          詳細(xì)功能請參見開發(fā)手冊

           

          瀏覽 23
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          評論
          圖片
          表情
          推薦
          點(diǎn)贊
          評論
          收藏
          分享

          手機(jī)掃一掃分享

          編輯 分享
          舉報
          <kbd id="afajh"><form id="afajh"></form></kbd>
          <strong id="afajh"><dl id="afajh"></dl></strong>
            <del id="afajh"><form id="afajh"></form></del>
                1. <th id="afajh"><progress id="afajh"></progress></th>
                  <b id="afajh"><abbr id="afajh"></abbr></b>
                  <th id="afajh"><progress id="afajh"></progress></th>
                  日本a在线免费电影 | 国产精品久久丫 | 国产成人黄色网 | 日本黄色一级A片 | 日韩爱爱网|