我在閑魚做搭建——魔魚搭投編輯器介紹
2022-11-17 | 10:08 | 發(fā)布在分類 / 客服知識 | 閱讀:83
2022-11-17 | 10:08 | 發(fā)布在分類 / 客服知識 | 閱讀:83
背景
魔魚搭投編輯器是一個前端頁面可視化搭建工具,運營借助編輯器可以調用搭投的底層能力,在無需開發(fā)介入的情況下,自主修改頁面內容;簡單舉幾個需求場景增強一下體感:
結合上回《閑魚前端技術體系的背后——魔魚》的介紹,我們回顧建設魔魚平臺的目標:
魔魚頁面編輯器鏈接了搭投系統(tǒng)的多個鏈路:研發(fā)編寫頁面提供配置表單,對接底層系統(tǒng)使運營能可視化搭建頁面和修改投放數(shù)據(jù),對接網關補全動態(tài)數(shù)據(jù),對接渲染引擎渲染最終頁面等,功能涉及面很廣。另外,阿里前端作為電商領域研究多年的技術團隊,內部自然對頁面搭建技術有大量基礎建設,從圖上可以看到,魔魚頁面編輯器的建設依賴很多外部系統(tǒng)的支持,結合閑魚需求場景和對已有技術的選型,魔魚團隊得以在2個月的時間完成一套搭建方案的上線。實現(xiàn)
P:即Page,指搭建系統(tǒng)中創(chuàng)建的頁面;
M:指Module,指搭建系統(tǒng)所創(chuàng)建的頁面中的模塊;
T:TAG,指搭建系統(tǒng)中,頁面中模塊的每一個可用來投放數(shù)據(jù)的單位(資源位);
在此之上,我們提供出排期策略模型Strategy,魔魚設計一個模塊只有一個TAG,因此每個模塊都只有一個資源位,以魔魚源碼搭建為例圖示一下模型間的關系:
天馬基于PMT設計規(guī)范提供了串聯(lián)操作頁面,模塊,資源位之間關系的底層能力,魔魚依賴于此開發(fā)可視化搭建的功能,并通過設計資源位和排期系統(tǒng)的交互,提供給運營動態(tài)投放數(shù)據(jù),所見即所得實時驗證頁面效果的能力。
可視化搭建效果演示:
舉個例子,開發(fā)要提供運營可配置banner圖片(要求圖片大小750*200,必填)和banner跳轉鏈接(必填),需要編寫如下schema來描述表單:{
"title": "腰通banner",
"type": "object",
"properties": {
"picUrl": {
"type": "image",
"title": "圖片鏈接",
"x-format": "@image(750,220)",
"x-required": true
},
"url": {
"type": "string",
"title": "跳轉鏈接",
"x-format": "@url()",
"x-required": true
},
}
}簡單解釋一下schema的含義,type表示字段類型是字符串,title是字段的名稱,x-format和x-required則是我們拓展的字段來表示一些校驗規(guī)則;
而經過魔魚表單組件渲染后,運營配置時則會看到如下效果:
這里展開介紹一下研發(fā)過程中思考面臨的痛點問題:
components: {
image: Image,
string: Input,
Input,
Password,
boolean: Switch,
array: ArrayTable,
Space,
color: Color,
time: TimePicker,
cards: ArrayCards,
text: Input,
date: DateTime,
daterange: DatePicker.RangePicker,
textarea: Input.TextArea,
number: NumberPicker,
radio: Radio.Group,
plugin: Plugin,
select: Select,
Editable,
copy: CopyItem,
// UI組件
FormCollapse,
FormGrid,
FormLayout,
FormItem,
},})通過這個能力,開發(fā)按對業(yè)務的理解描述字段類型即可渲染出對應表單組件;另外我們約定了x-format關鍵字,針對常用的數(shù)據(jù)格式校驗,提供了快捷得聲明方法,例如上文提及的校驗banner圖片大小,開發(fā)按如下規(guī)范添加x-fromat代碼:
在遞歸階段,分析出參數(shù)后添加校驗邏輯,通過checkImage方法校驗圖片的尺寸,格式,大小等信息是否符合頁面要求。(另外,通過收斂上傳圖片接口也可以有效約束圖片素材的壓縮要求)const handler = {@image('WidthxHeight', format, minSize, maxSize)
...
image: (
dimension: string,
format: string,
minSize: number,
maxSize: number,
uploaderOptions: any,
action?: string,
): IMoyuSchema =>{
return{
'x-component': 'image',
'x-component-props': {
dimension,
format,
minSize,
maxSize,
uploaderOptions,
action,
},
'x-validator': async(value: any) =>{
returncheckImage({ dimension, format, src: value });
},
};
}
...
}效果如下:
我們的需求是描述一個商品列表的配置表單,根據(jù)魔魚的schema規(guī)范只需要寫如下schema:listDemo:{
type:'array', //指定該數(shù)據(jù)的類型為type
title:'商品列表',
items:{
type: 'object',
properties: {
... // 數(shù)組項 每一個商品的字段
},
},
}
}魔魚平臺呈現(xiàn)給運營具備增刪修改復制排序能力的數(shù)組表單:
這個過程中,我們根據(jù)數(shù)組和數(shù)組項類型指定schema的表單組件,增加數(shù)組操作控件,添加每一個表單的UI描述代碼,最后通過formily渲染出上面的表單;
基于這個思路,我們約定了動態(tài)數(shù)據(jù),其他系統(tǒng)的插件iframe接入的規(guī)范,避免了schema文件編寫維護困難的問題;
為此,閑魚策略中臺為我們定制了策略排期能力,可以將模塊的資源位和排期模型進行綁定,在此基礎上我們設計實現(xiàn)了如下能力:
目前閑魚APP內多個頁面已經遷移/接入了魔魚研發(fā)體系,相對于使用集團內搭投編輯器方案,定制設計的頁面交互方案去除了復雜冗余的不相干功能提升運營理解操作成本,而通過閑魚schema規(guī)范的設計使更多內容運營可自主修改從而減少了研發(fā)介入的發(fā)布耗時,另外通過支持動態(tài)數(shù)據(jù)源的配置能力,配合網關減少了頁面首屏耗時;
搭建技術本質上也是一種低代碼的技術方案,使用搭投編輯器,閑魚前端團隊可以沉淀團隊日常開發(fā)中的物料組件變?yōu)橥ㄓ媚K來提升代碼復用率從而提升研發(fā)效率;支持更多商品內容的動態(tài)配置來提升運營頁面的效率。未來搭投編輯器一方面會繼續(xù)支持前端研發(fā)整體方案的迭代升級,另一方面會和平臺使用者積極溝通帶來更好的交互體驗!
這個問題還有疑問的話,可以加幕.思.城火星老師免費咨詢,微.信號是為: msc496。
推薦閱讀:
淘寶店鋪過季商品現(xiàn)在沒有什么訪客的用不用下架呢?
更多資訊請關注幕 思 城。
微信掃碼回復「666」
別默默看了 登錄 \ 注冊 一起參與討論!