最近在弄公司的一個活動頁面可配置的項目,姑且叫cms吧
功能呢就是每次做促銷活動比如雙11的時候運營在管理後台配置相應的模組,最終生成頁面
介面是類似這個樣子的結構
{
list:[
{
type: 1, //这个模块的type,比如1对应商品组合模块
cmsId: 1, //这个模块的唯一id
data: {
//具体的这个模块的数据
}
}
],
code: 200,
msg: ''
}
目前我的思路是這樣的:
透過簡單的工廠模式定義一個通用介面
var factoryInterface = function(type,data){
switch(type){
case 1:
return new BannerWithBroadcastTpl(data)
break;
case 2:
return new PicDisplayTpl(data)
break;
}
}
BannerWithBroadcastTpl和PicDisplayTpl都是定義好的元件,每個元件都有一個create方法來創造元件
用下面的程式碼來最終完成專案的初始化
#for(var i=0,length=data.length;i<length;i++){
!(function(i){
factoryInterface(data[i].type,data[i]).create(_this.root)
})(i)
}
現在想跟各位大神討論下這個方案還有沒有其他的程式碼設計方案,歡迎大家來噴~~
寫在前面
在專案設計之前,先問幾個問題:
實際開發雙11活動中,什麼問題需要我們解決?這些問題有哪些解決方案?
利用該系統,能否解決我們實際開發雙11活動中遇到的問題?能解決百分之幾十的問題?
做該專案的Cost有多大?利用該Cost去解決一定佔比的問題,是否值得?
專案核心
計畫
設計
實作(分期)
遺留問題
專案計畫
提出問題:
每次雙11活動有多少相同的設計點,可以抽像出來的點有多少? --> 要做一個簡單的模板系統,還是功能點齊全的系統?全自動還是半自動? --> 哪些功能需要實現? --> 資源有哪些,是否足夠? (人力、時間等等)
想清楚了以上問題,給出一個完整的計劃。
專案設計
在上面問題全部想清楚的基礎上,舉個例子說明:
功能點劃分:模組、頁面、PV/UV/Track、事件
可以公用的模組有哪些?一種木塊有幾種展示類型?因此至少需要兩個以上的typeId才能區分。
頁面與模組透過Id組合。
資料埋點與頁面組合。
事件系統怎麼處理。頁面上的操作處理。
其他....
專案實施
考慮幾個問題:
專案如何分期實現?
前面幾個版本如何迭代?
如何快速驗證我們的想法是否正確?
安排多少人開發,多少人繼續維護這個專案?
遺留問題
這個計畫只能涵蓋部分活動,還有很多活動不通用,人們的需求總是不斷在改變。
越來越多的模組需要維護,維護難度也很大。
其他...
總結
我這裡只是簡單的舉個例子,怎麼去解決這個專案問題,希望有更多的方案。歡迎大家吐槽...