Vor kurzem arbeite ich an einem konfigurierbaren Projekt für die Veranstaltungsseite des Unternehmens, nennen wir es cms
Die Funktion besteht darin, jedes Mal, wenn es eine Werbeveranstaltung wie Double 11 gibt, das entsprechende Modul im Management-Backend zu konfigurieren und schließlich die Seite zu generieren
Die Schnittstelle hat eine ähnliche Struktur
{
list:[
{
type: 1, //这个模块的type,比如1对应商品组合模块
cmsId: 1, //这个模块的唯一id
data: {
//具体的这个模块的数据
}
}
],
code: 200,
msg: ''
}
Meine aktuelle Überlegung ist folgende:
Definieren Sie eine gemeinsame Schnittstelle durch ein einfaches Fabrikmuster
var factoryInterface = function(type,data){
switch(type){
case 1:
return new BannerWithBroadcastTpl(data)
break;
case 2:
return new PicDisplayTpl(data)
break;
}
}
BannerWithBroadcastTpl und PicDisplayTpl sind beide definierte Komponenten. Jede Komponente verfügt über eine Erstellungsmethode zum Erstellen der Komponente
Verwenden Sie den folgenden Code, um die Initialisierung des Projekts endgültig abzuschließen
for(var i=0,length=data.length;i<length;i++){
!(function(i){
factoryInterface(data[i].type,data[i]).create(_this.root)
})(i)
}
Jetzt möchte ich mit euch Mastern besprechen, ob es noch andere Code-Design-Lösungen für diesen Plan gibt. Jeder kann gerne Kommentare abgeben~~
写在前面
在项目设计之前,先问几个问题:
实际开发双11活动中,什么问题需要我们去解决?这些问题有哪些解决方案?
利用该系统,能否解决我们实际开发双11活动中遇到的问题?能解决百分之几十的问题?
做该项目的Cost有多大?利用该Cost去解决一定占比的问题,是否值得?
项目核心
计划
设计
实施(分期)
遗留问题
项目计划
提出问题:
每次双11活动有多少相同的设计点,可以抽象出来的点有多少? --> 要做一个简单的模板系统,还是功能点齐全的系统?全自动还是半自动? --> 哪些功能需要实现? --> 资源有哪些,是否足够?(人力、时间等等)
想清楚了以上问题,给出一个完整的计划。
项目设计
在上面问题全部想清楚的基础上,举个例子说明:
功能点划分:模块、页面、PV/UV/Track、事件
可以公用的模块有哪些?一种木块有几种展示类型?因此至少需要两个以上的typeId才能区分。
页面与模块通过Id组合起来。
数据埋点与页面组合。
事件系统怎么处理。页面上的操作处理。
其他....
项目实施
考虑一下几个问题:
项目如何分期实现?
前面几个版本如何迭代?
如何快速验证我们的想法是否正确?
安排多少人开发,多少人继续维护这个项目?
遗留问题
该项目只能覆盖部分活动,还有很多活动不通用,人们的需求总在不断变化。
越来越多的模块需要维护,维护难度也很大。
其他...
总结
我这里只是简单的举个例子,怎么去解决这个项目问题,希望有更多的方案。欢迎大家吐槽...