記一次頁面配置化的實踐

2021-10-22 14:00:07 字數 2744 閱讀 7596

在日常專案開發中,我們可能會遇到一些專案,它們的文案可能會不定期改變,多個頁面有相似之處,但是相同中又有不同,比如有的直播活動,策略邏輯沒變,改了獎品、背景圖和banner,也可以叫做換膚;也比如一些產品的官網,會不斷加一些子頁面,但是風格都是統一的,但會改變布局和文案。這個時候,做為技術,我們會思考如何能減少開發成本,避免改動一次文案替換乙個就跑一遍繁瑣的上線流程呢?大家一定能想到如果能把這些改動都做成可以配置的,那不就方便很多了麼?前陣子正好做了這樣場景的乙個專案,於是嘗試了下把頁面盡可能寫成可配置的。下面就簡單介紹下。

一、專案簡介:

專案是乙個官網專案,大部分都是靜態頁,分析需求,總結以下幾點:

二、整體思路

核心思想:需要配置的能配皆配。三、實現舉例

選單配置化

頂部選單舉例:

選單的效果如下圖,包含一級選單和二級選單。

選單配置json是這樣的

export

default

, footershow:

true

,// 控制頁尾是否展示

children:

[// 二級選單

, path:

'/product/audio-call'

,// 頁面路由

opentype:1,

// 是否新頁面開啟

icon:

'tab-p2.png'

,// 標題左側圖示}]

},]}

最外層寫成陣列,方便拓展,引入賦值後,根據我們的需要進行遍歷,結合判斷具體用途的屬性是否存在實現每一項個性化的配置。

產品系列頁面配置

我們先來看一下設計稿

可以發現風格類似,每乙個產品介紹頁可以提出來。

我們再來看一下某乙個頁面的大圖。

再看下**,首先是產品頁,雖然頁面是多個,但是我們可以用一套**,這取決於我們將每個模組也進行了配置化。

通過定義modules的name屬性,每個模組載入對應的配置。

可以通過配置裡面直接寫style覆蓋當前樣式,也可以傳數值或者字串取頁面裡寫好的類名載入不同的樣式。

四、更進一步

到這裡,我們雖然已經實現了配置化,但卻是本地化的,我們修改乙個文案是可以直接改json,但是還是要走打包發布的流程。如何更進一步呢?這裡我們借助了公司內部前端架構組研發的pear配置平台,實現了json配置的線上配置。

然後我們引入對應的包和api呼叫線上資料。

import pearfetch from

"@***/pear-fetch"

;const configfetch =

newpearfetch()

;...

// 通過對應的id 拿到雲端的資料

const json =

await configfetch.

fetch()

;...

根據json中約定的key,比如這裡是以路由為key,將資料分發到各個頁面。

最後為了防止服務停止或者網路出錯,使用本地json配置兜底。

import

from

'@constant/pear'

;import

localdata

from

'../mock'

;async

getjsonconfig()

);this

.json =

await configfetch.

fetch()

;}catch

(err

)}

pear平台提供了發布配置和修改配置的能力,這樣如果有文案需要修改,就可以直接在雲端修改後發布,不再需要走繁瑣的專案發布流程了。優點是能快速更新線上。當然之後為了保持文案同步,建議把雲端最新的配置複製到本地。隨之後版本一起公升級。

以上就是關於頁面配置化的一次簡單實踐,總體上提高了開發效率,尤其為後期維護節約了大量時間,甚至可以交給運營去維護配置,我們只需要發布之前把關即可。

頁面配置化確實值得嘗試,真的很香!

我是bigo前端,下期見。

記一次頁面優化及使用快取機制

一 使用html5的快取機制 1.先上規則 m.manifest cache manifest 2015 04 24 14 20 直接快取的檔案 cache templates specialty css style.css templates specialty js jquery.js temp...

一次頁面請求過程

很早之前就想寫一篇關於頁面請求整個過程的文章。當然,這樣的文章網上到處都是。而且自己寫的並沒有比別人好,那為什麼還要寫那。人都是善忘的動物,寫下來主要是作為備忘,同時鍛鍊下自己的表達能力。畢竟能把乙個問題講明白才能說明真正的懂了。詳細的報文分析可以參考 http權威指南 這裡不做贅述。如圖1,實際上...

一次元件化的實踐

更新 1.mvvm 可以將網路層轉移到viewmodel 層中,這樣就不需要將網路層抽離了,因為本來就沒和 控制器耦合。2.每次使用蜂巢的時候 控制器一定要實現 服務的協議,不然蜂巢會崩,還很難找到原因 3.蜂巢方案 雖然分離了控制器業務的耦合,但是引入了protocol 協議的耦合。同時需要維護 ...