營(yíng)銷搭建系統(tǒng)的設(shè)計(jì)思想復(fù)盤
嗨, 大家好, 我是徐小夕, 之前分享了很多可視化低代碼相關(guān)的技術(shù)實(shí)踐和開源項(xiàng)目, 今天繼續(xù)和大家分享一下如何通過可視化搭建技術(shù)設(shè)計(jì)高效的企業(yè)營(yíng)銷配置系統(tǒng)。
背景
隨著技術(shù)的飛速發(fā)展和行業(yè)高內(nèi)聚的競(jìng)爭(zhēng)內(nèi)卷, 企業(yè)數(shù)字化轉(zhuǎn)型更加迫在眉睫. 很多傳統(tǒng)企業(yè)為了提高盈利能力, 在流量,轉(zhuǎn)化和口碑上投入了巨大的成本, 比如:
- 招募(或擴(kuò)大)優(yōu)質(zhì)銷售團(tuán)隊(duì)。
- 廣告投放(為了更多的流量和轉(zhuǎn)化)。
- 系統(tǒng)搭建(更高效的管理企業(yè)進(jìn)銷存)。
- 策略運(yùn)營(yíng)分析(更精準(zhǔn)的投流獲客和產(chǎn)品品牌力打造)。
- 其他企業(yè)策略目標(biāo)。
為了讓不同能力團(tuán)隊(duì)共享信息, 我們需要利用信息化技術(shù)來設(shè)計(jì)一套“粘合劑”, 讓“企業(yè)發(fā)動(dòng)機(jī)”高效運(yùn)轉(zhuǎn). 這個(gè)“粘合劑” 就是我們說的數(shù)字(智)化營(yíng)銷系統(tǒng). 它不會(huì)侵入到企業(yè)的具體業(yè)務(wù)中, 而是通過連接企業(yè)數(shù)字資產(chǎn), 實(shí)現(xiàn)對(duì)外品宣,獲客和需求反饋. 更多充當(dāng)?shù)氖情T戶和反饋系統(tǒng)的作用。
設(shè)計(jì)實(shí)現(xiàn)方案
為了實(shí)現(xiàn)營(yíng)銷數(shù)字化系統(tǒng), 我們一般會(huì)采用三種方案:
- 傳統(tǒng)業(yè)務(wù)開發(fā)型
- 配置化營(yíng)銷中心
- 可視化營(yíng)銷搭建平臺(tái)
1、傳統(tǒng)業(yè)務(wù)開發(fā)型
早期我們更多的企業(yè)營(yíng)銷宣傳頁(yè)面大多采用這種模式, 面向營(yíng)銷活動(dòng)或者業(yè)務(wù)活動(dòng)設(shè)計(jì)針對(duì)性的頁(yè)面. 但是隨著企業(yè)規(guī)模的壯大和活動(dòng)需求規(guī)模化之后, 普通頁(yè)面開發(fā)意味著人力成本的線性增加, 我們需要通過“堆人”來實(shí)現(xiàn)業(yè)務(wù)需求.
從前端技術(shù)側(cè), 為了進(jìn)一步提高研發(fā)效率, 前端程序員不得不去思考如何復(fù)用的問題. 但是實(shí)際情況卻不容樂觀. 從我個(gè)人研發(fā)經(jīng)驗(yàn)的角度, 對(duì)定制型營(yíng)銷場(chǎng)景開發(fā)我們可以采用如下措施提高研發(fā)效率:
(1)搭建營(yíng)銷組件庫(kù) / 業(yè)務(wù)sdk抽象
我們可以在開發(fā)之初就定好一個(gè)可擴(kuò)展的技術(shù)方案, 針對(duì)活動(dòng)/營(yíng)銷頁(yè)面 以組件化的方式開發(fā), 然后將業(yè)務(wù)功能沉淀為可復(fù)用的技術(shù)資產(chǎn). 我們可以用vue / react等技術(shù)框架來搭建組件庫(kù)工程, 這塊我之前寫過一篇 從零搭建前端組件庫(kù)系統(tǒng) 的工程, 大家感興趣可以參考一下。
更近一步的, 任何頁(yè)面都離不開通用能力和埋點(diǎn)監(jiān)控, 如下:
這些 工具函數(shù) 和 業(yè)務(wù)sdk 未來會(huì)在不用需求頁(yè)面中反復(fù)使用, 所以我們也可以更進(jìn)一步的封裝和抽象。
(2)搭建通用腳手架, 實(shí)現(xiàn)基礎(chǔ)工程和業(yè)務(wù)方案的復(fù)用(配置化)
通用腳手架可以讓前端團(tuán)隊(duì)更高效的復(fù)用技術(shù)資產(chǎn), 比如不同技術(shù)同事開發(fā)不同的需求時(shí), 我們能使用前人積累的技術(shù)實(shí)踐, 省去了前期的調(diào)研和試錯(cuò)成本. 一個(gè)成熟的前端腳手架包括:
- 基礎(chǔ)的項(xiàng)目工程配置
- 路由配置(baseUrl, public, outPut等)
- 分包策略
- 模塊加載器Loader(比如對(duì)svg, png, pdf, excel, css等處理)
- 代碼插件(代碼壓縮, 分割, 按需打包, hot reload等)
- 服務(wù)proxy支持
- 微前端配置等
當(dāng)然我們還可以參考市面上比較成熟的前端工程解決方案, 比如 umi, vite等.
(3)建立可配置的模版庫(kù)
雖然我們用定制代碼的方案無法很輕易的實(shí)現(xiàn)類似配置平臺(tái)或者搭建平臺(tái)的高可配性, 但是我們?nèi)匀豢梢栽O(shè)計(jì)一種偽配置化方案. 類似下面的配置:
{
"title": "第3期企業(yè)數(shù)字化宣講",
"layout": {
"header": [],
"main": [],
"footer": []
},
"share_icon": "微信分享icon",
"share_desc": "Dooring, 讓頁(yè)面制作更簡(jiǎn)單",
"track": true // 是否啟用埋點(diǎn)
"api_path": "https://xxxx.com"
}
然后在頁(yè)面中設(shè)計(jì)一套模版引擎, 來動(dòng)態(tài)讀取json配置, 需要自定義的部分即可自定義開發(fā). 我們通過這種方式, 就可以用一套基礎(chǔ)模式, 快速生成自定義的頁(yè)面模版, 從而提高頁(yè)面搭建效率。
在接下來分享的方案中我會(huì)介紹具體的實(shí)現(xiàn)思路。
2、配置化營(yíng)銷中心
相信大部分互聯(lián)網(wǎng)企業(yè)都做過類似配置化平臺(tái)的項(xiàng)目, 營(yíng)銷板塊也不例外. 當(dāng)然要做配置化平臺(tái), 需要產(chǎn)品, 運(yùn)營(yíng)和技術(shù)的通力協(xié)作, 也就意味著要脫離技術(shù)多方?jīng)Q策. 這要求產(chǎn)品和運(yùn)營(yíng)需要對(duì)整體業(yè)務(wù)做一個(gè)通用性的抽象, 并通過技術(shù)人員轉(zhuǎn)化為可實(shí)現(xiàn)并被需求方低成本理解的配置平臺(tái).
對(duì)于配置系統(tǒng)方案, 我之前寫過一篇文章《基于react/vue搭建一個(gè)通用的表單管理配置平臺(tái)》, 大家感興趣可以參考一下, 本質(zhì)上也是將抽象業(yè)務(wù)做統(tǒng)一封裝, 從而在技術(shù)層面實(shí)現(xiàn)按需渲染(配置式渲染):
具體展現(xiàn)形式如下:
關(guān)于動(dòng)態(tài)配置表單的渲染模式, 我之前也提供了一種實(shí)現(xiàn)方案, 這也是目前大部分動(dòng)態(tài)表單實(shí)現(xiàn)的一種模式(標(biāo)準(zhǔn)化SDL輸出):
// 基礎(chǔ)模版數(shù)據(jù)
const tpl = [
{
label: '文本框',
placeholder: '請(qǐng)輸入內(nèi)容',
type: 'text',
value: '',
index: uuid(5)
},
{
label: '單選框',
type: 'radio',
option: [{label: '男', value: 0}, {label: '女', value: 1}],
index: uuid(5)
},
{
label: '復(fù)選框',
type: 'checkbox',
option: [{label: '男', value: 0}, {label: '女', value: 1}],
index: uuid(5)
},
{
label: '多行文本',
placeholder: '請(qǐng)輸入內(nèi)容',
type: 'textarea',
index: uuid(5)
},
{
label: '選擇框',
placeholder: '請(qǐng)選擇',
type: 'select',
option: [{label: '中國(guó)', value: 0}, {label: '俄羅斯', value: 1}],
index: uuid(5)
},
{
label: '文件上傳',
type: 'upload',
index: uuid(5)
}
]
// 模版渲染組件
const tplMap = {
text: {
component: (props) => {
const { placeholder, label } = props
return <div className={styles.fieldOption}><span className={styles.fieldLabel}>{label}:</span><Input placeholder={placeholder} /></div>
}
},
textarea: {
component: (props) => {
const { placeholder, label } = props
return <div className={styles.fieldOption}><span className={styles.fieldLabel}>{label}:</span><TextArea placeholder={placeholder} /></div>
}
},
radio: {
component: (props) => {
const { option, label } = props
return <div className={styles.fieldOption}>
<span className={styles.fieldLabel}>{label}:</span>
<Radio.Group>
{
option && option.map((item, i) => {
return <Radio style={radioStyle} value={item.value} key={item.label}>
{ item.label }
</Radio>
})
}
</Radio.Group>
</div>
}
},
checkbox: {
component: (props) => {
const { option, label } = props
return <div className={styles.fieldOption}>
<span className={styles.fieldLabel}>{label}:</span>
<Checkbox.Group>
<Row>
{
option && option.map(item => {
return <Col span={16} key={item.label}>
<Checkbox value={item.value} style={{ lineHeight: '32px' }}>
{ item.label }
</Checkbox>
</Col>
})
}
</Row>
</Checkbox.Group>
</div>
}
},
select: {
component: (props) => {
const { placeholder, option, label } = props
return <div className={styles.fieldOption}>
<span className={styles.fieldLabel}>{label}:</span>
<Select placeholder={placeholder} style={{width: '100%'}}>
{
option && option.map(item => {
return <Option value={item.value} key={item.label}>{item.label}</Option>
})
}
</Select>
</div>
}
},
upload: {
component: (props) => {
return <div className={styles.fieldOption}>
<span className={styles.fieldLabel}>{props.label}:</span>
<Upload
listType="picture-card"
className="avatar-uploader"
showUploadList={false}
action="https://www.mocky.io/v2/5cc8019d300000980a055e76"
>
<div>+</div>
</Upload>
</div>
}
}
}
export {
tpl,
tplMap
}
當(dāng)然市場(chǎng)上也有比較成熟的開源方案, 比如 family, XRender等。
3、可視化營(yíng)銷搭建平臺(tái)
以上我們可以看到, 從定制化代碼到配置化方案, 技術(shù)架構(gòu)有了漸進(jìn)式升級(jí), 接下來繼續(xù)分享一種更低成本的方案: 可視化搭建平臺(tái)。
可視化搭建平臺(tái)是一種建立在底層通用規(guī)則之上的通過拖拽+配置化來實(shí)現(xiàn)頁(yè)面生產(chǎn)能力的一種高效率解決方案. 它主要解決的問題如下:
- 企業(yè)數(shù)據(jù)孤島(應(yīng)用間數(shù)據(jù)共享,互通困難)。
- 企業(yè)定制化需求日益增加(不同行業(yè)賦能不同的應(yīng)用場(chǎng)景, 千“客”千面)。
- IT人才供不應(yīng)求。
- 溝通成本,研發(fā)成本, 研發(fā)周期吃緊。
- 產(chǎn)品迭代和響應(yīng)性遲緩。
所以我們迫切需要諸如低代碼/零代碼這樣的方案, 來解決上述問題. 目前國(guó)內(nèi)有上千家企業(yè)在接觸或者落地低代碼/零代碼方案, 我之前也開源了一個(gè)解決方案H5-Dooring, 用來解決頁(yè)面生產(chǎn)效能的問題:
當(dāng)然設(shè)計(jì)可視化搭建系統(tǒng)需要考慮更多系統(tǒng)化問題, 比如:
- 如何滿足更多的定制需求。
- 如何對(duì)接企業(yè)數(shù)據(jù)源。
- 如何跨場(chǎng)景, 跨多端。
- 如何出高質(zhì)量可維護(hù)的代碼。
- 如何保證線上頁(yè)面運(yùn)行穩(wěn)定和頁(yè)面監(jiān)控/閾值預(yù)警。
當(dāng)然并不是每家企業(yè)都有極高的要求, 所以我們需要針對(duì)企業(yè)實(shí)際需求和未來需求, 制定更合理的可視化解決方案. 關(guān)于可視化平臺(tái)的實(shí)現(xiàn)方案我之前也寫了很多文章和開源方案, 這里就不一一介紹了, 感興趣的朋友可以參考一下。
- H5-Dooring
- H5-Stream
- V6.Dooring
如何利用DooringSaas快速落地營(yíng)銷配置方案
上面介紹了3種技術(shù)設(shè)計(jì)方案, 接下來我就以一個(gè)具體的案例, 來分享一下高效營(yíng)銷落地方案.
轉(zhuǎn)盤抽獎(jiǎng)營(yíng)銷頁(yè)面是我們比較熟悉的一種運(yùn)營(yíng)手段, 傳統(tǒng)開發(fā)中我們需要針對(duì)每一場(chǎng)活動(dòng)開發(fā)獨(dú)立的業(yè)務(wù)代碼, 如果我們將營(yíng)銷活動(dòng)的規(guī)則抽象出來, 并封裝業(yè)務(wù)常用的抽獎(jiǎng)組件, 并提供一定的配置靈活性, 這樣我們就能滿足大部分的營(yíng)銷活動(dòng)場(chǎng)景, 如下, 我們可以配置抽獎(jiǎng)信息, 中獎(jiǎng)比例, 中獎(jiǎng)后的一系列交互配置:
對(duì)于企業(yè)的品宣場(chǎng)景, 我們也可以從可視化搭建平臺(tái)中找到解決方案, 我們只需要對(duì)接企業(yè)資源庫(kù), 業(yè)務(wù)統(tǒng)配數(shù)據(jù)接口, 安全規(guī)范和數(shù)據(jù)上報(bào)模式, 我們就可以用可視化平臺(tái)從技術(shù)側(cè)轉(zhuǎn)化為業(yè)務(wù)側(cè)直接搭建, 近一步縮短溝通周期。
有關(guān)拖拽搭建方案, 這里筆者也分享幾個(gè)成熟方案:
- moveable
- react-draggable
- Vue Easy DnD
- Vue smooth dnd
- V-drag
- react-dnd
總結(jié) & 展望
后續(xù)我也會(huì)繼續(xù)分享低代碼和可視化相關(guān)的技術(shù)方案和設(shè)計(jì)模式, 如果大家感興趣也可以隨時(shí)和我交流. 比如:
- 如何實(shí)現(xiàn)跨多端的出碼方案。
- 業(yè)務(wù)層零代碼如何快速落地企業(yè)最佳實(shí)踐。
- 桌面端可視化平臺(tái)的價(jià)值最大化。
- AI和可視化的一些價(jià)值主張。
- 通過可視化生態(tài)建設(shè), 如果讓每一家企業(yè)都擁有一套可視化搭建平臺(tái)。