<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>

          H5 活動(dòng)頁面快速生成神器——Mocha

          共 2346字,需瀏覽 5分鐘

           ·

          2021-03-13 06:53

          項(xiàng)目介紹


          Mocha 項(xiàng)目為 H5 活動(dòng)配置平臺(tái),用于簡(jiǎn)單、靈活、快速地生成活動(dòng)頁面,操作方式采用拖拽來快速生成,使之更方便地獲得想要的內(nèi)容,所見即所得。同時(shí)還支持在線預(yù)覽、掃碼預(yù)覽、一鍵發(fā)布上線等功能。相比原來開發(fā)廣告活動(dòng)所消耗的開發(fā)成本大幅度降低。那么,接下來就開始說說這個(gè)活動(dòng)配置平臺(tái)~


          項(xiàng)目流程圖



          Mocha 活動(dòng)配置平臺(tái)項(xiàng)目主要通過簡(jiǎn)單配置快速、穩(wěn)定上線,減少開發(fā)成本。此項(xiàng)目技術(shù)及框架涉及到 React、dva、umi、react-dnd、antd 等,數(shù)據(jù)是存儲(chǔ)到ElasticSearch (簡(jiǎn)稱:es)服務(wù)中,同時(shí)會(huì)同步緩存到 redis。當(dāng)未超過緩存時(shí)間時(shí)直接讀取 redis 中的數(shù)據(jù)并返回,但此次介紹的重點(diǎn)并不是數(shù)據(jù)的存儲(chǔ)和讀取,而是一個(gè)新活動(dòng)的生成及實(shí)現(xiàn)過程。


          活動(dòng)創(chuàng)建


          活動(dòng)的創(chuàng)建根據(jù)不同的類型進(jìn)行區(qū)分,如:默認(rèn)分類、運(yùn)營活動(dòng)、投放活動(dòng)、研發(fā)測(cè)試等。一般針對(duì)于新的組件功能研發(fā)或測(cè)試的活動(dòng)會(huì)在研發(fā)測(cè)試分類中,其他分類下均由運(yùn)營同學(xué)來配置活動(dòng)。接下來看一下如何創(chuàng)建新的活動(dòng),如圖所示:



          這里的活動(dòng) ID 是由前端生成的,可以通過此 ID 值在 es 服務(wù)查詢到當(dāng)前活動(dòng)的數(shù)據(jù)。活動(dòng) ID 的生成規(guī)則代碼如下:



          活動(dòng)配置


          創(chuàng)建一個(gè)活動(dòng)后,我們來具體看看如何配置一個(gè)活動(dòng)以及是如何實(shí)現(xiàn)的。先來看一下配置活動(dòng)的頁面結(jié)構(gòu):



          從圖上可以看出,在配置活動(dòng)的頁面中主要分為三個(gè)部分,分別是組件庫、畫布展示區(qū)、組件屬性配置


          組件庫

          每一個(gè)組件由 index.tsx、schema.ts、template.ts 文件三個(gè)部分組成,如圖:



          • index.tsx:主要用來顯示組件內(nèi)容,展示左側(cè)組件庫中的模板及畫布上配置參數(shù)后的組件

          • schema.ts:組件的基礎(chǔ)數(shù)據(jù)信息

          • template.ts:組件的類型、生成樣式及組件名稱


          在組件庫中的每一個(gè)組件由 DynamicEngine 組件動(dòng)態(tài)解析生成,給組件 DynamicEngine 傳入相應(yīng)的參數(shù)來生成不同的組件,代碼如下:



          再來看一下 DynamicEngine 組件的實(shí)現(xiàn),代碼如下:



          代碼中可以看到 props 中有一個(gè) isTpl 屬性,這個(gè)屬性的目的是用來做展示區(qū)分的。當(dāng) isTpl 為 true 時(shí)會(huì)顯示在組件庫中,否則會(huì)展示到畫布展示區(qū)中。那么來看一下畫布展示區(qū)這個(gè)部分到底做了哪些工作。


          畫布展示區(qū)

          當(dāng)一個(gè)組件從組件庫中拖拽到畫布中,會(huì)顯示組件的默認(rèn)信息。以圖片組件為例,如圖所示:



          從圖上可以看出,我們只需要簡(jiǎn)單配置相對(duì)應(yīng)的數(shù)據(jù)信息即可在畫布中顯示出我們想要的結(jié)果。那么,來看一下是這部分是如何實(shí)現(xiàn)的,代碼如下:



          GridLayout 組件主要的作用是對(duì)畫布的拖拽事件做了一些處理,在 GridLayout 組件中我們可以同樣看到 DynamicEngine 組件的存在。這里的 DynamicEngine 與組件庫中為同一個(gè)組件,作用也是一致的。唯一不同的是此時(shí)的 isTpl 屬性為 false,那么在動(dòng)態(tài)加載組件時(shí)可以通過此屬性展示出不同的內(nèi)容。接下來同樣以圖片列表組件為例來看一下在組件中 isTpl 屬性做怎樣的區(qū)分,代碼如下:



          通過屬性 isTpl 做不同的展示處理,屬性 imageList 用來處理圖片展示的數(shù)據(jù),這樣就可以在組件庫及畫布展示區(qū)中得到我們想要的數(shù)據(jù)。那么,組件的屬性是如何配置、如何解析的呢?接下來就看一下組件信息的配置。


          組件屬性配置

          一個(gè)組件的具體屬性數(shù)據(jù)的配置均由此部分進(jìn)行,根據(jù)組件的 schema 信息解析對(duì)應(yīng)的配置組件,再由配置組件配置出的數(shù)據(jù)給到畫布展示區(qū)對(duì)應(yīng)的組件進(jìn)行渲染。組件的具體類型是在 template.ts 及 schema.ts 文件中定義的,代碼如下:




          通過以上的信息在組件屬性配置區(qū)域來區(qū)分加載不同類型的組件,那么來看一下不同類型的組件在 FormEditor 組件中如何加載的,列舉部分類型代碼如下:



          可以看到,通過組件的 schema.ts 中的 type 來動(dòng)態(tài)地加載不同的屬性組件,從而對(duì)組件的一些屬性進(jìn)行設(shè)置來顯示到畫布展示區(qū)中。


          預(yù)覽&發(fā)布上線


          預(yù)覽

          除了在畫布中顯示出配置好的信息以外,同時(shí)還可以通過預(yù)覽操作生成配置好的頁面用于發(fā)布上線之前的測(cè)試及效果查看。并可在預(yù)覽頁面生成二維碼在手機(jī)上查看效果,如圖所示:



          發(fā)布上線

          通過預(yù)覽頁面查看測(cè)試之后,我們可以在預(yù)覽頁面直接發(fā)布上線,點(diǎn)擊“提交”按鈕即可直接發(fā)布到線上,一個(gè)線上活動(dòng)就這樣完成了。


          總結(jié)


          Mocha 活動(dòng)配置平臺(tái)能夠在確保新活動(dòng)快速上線,減少開發(fā)成本的同時(shí),保證 B 端的穩(wěn)定輸出。后續(xù)還會(huì)對(duì)項(xiàng)目性能逐漸優(yōu)化,提高項(xiàng)目的穩(wěn)定性及完善程度。


          Mocha 活動(dòng)配置平臺(tái)主要的功能以及部分實(shí)現(xiàn)已經(jīng)在上文中一一介紹,目前項(xiàng)目中支持的組件包含圖片列表、輪播圖、購買、登錄、表單以及訂閱組件等。之后會(huì)根據(jù)業(yè)務(wù)的需求添加不同功能的組件來豐富平臺(tái)的功能,使之配置化平臺(tái)更加完善。


          Mocha 項(xiàng)目參考于開源項(xiàng)目 H5 Dooring 實(shí)現(xiàn)。


          推薦閱讀:

          數(shù)據(jù)流管理方案 | Redux 和 MobX 哪個(gè)更好?

          從理解 React 框架開始,開啟金三銀四面試之旅。

          前端典型面試題:為什么 React 選擇使用 JSX ?

          React 面試不完全指南:為什么要學(xué)數(shù)據(jù)流管理?

          尤雨溪 3 天 10 更的 Vite 究竟有什么魔力?

          我對(duì) Webpack 5 真香了。



          點(diǎn)個(gè)“在看”和“”吧,

          畢竟我是要成為前端網(wǎng)紅的人。

          瀏覽 167
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          評(píng)論
          圖片
          表情
          推薦
          點(diǎn)贊
          評(píng)論
          收藏
          分享

          手機(jī)掃一掃分享

          分享
          舉報(bào)
          <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片 | 亚洲国产精品波多野结衣 | 久久精品无码视频 | 国产黄片免费在线观看 | 青娱乐精品视觉盛宴 |