关于一个项目的设计方案探讨

wens
  • 245

最近在弄公司的一个活动页面可配置的项目,姑且叫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)
}

现在想和各位大神讨论下这个方案还有没有其他的代码设计方案,欢迎大家来喷~~

回复
阅读 1.7k
1 个回答

写在前面
在项目设计之前,先问几个问题:

  1. 实际开发双11活动中,什么问题需要我们去解决?这些问题有哪些解决方案?

  2. 利用该系统,能否解决我们实际开发双11活动中遇到的问题?能解决百分之几十的问题?

  3. 做该项目的Cost有多大?利用该Cost去解决一定占比的问题,是否值得?

项目核心

  1. 计划

  2. 设计

  3. 实施(分期)

  4. 遗留问题

项目计划
提出问题:
每次双11活动有多少相同的设计点,可以抽象出来的点有多少? --> 要做一个简单的模板系统,还是功能点齐全的系统?全自动还是半自动? --> 哪些功能需要实现? --> 资源有哪些,是否足够?(人力、时间等等)
想清楚了以上问题,给出一个完整的计划。

项目设计
在上面问题全部想清楚的基础上,举个例子说明:

  1. 功能点划分:模块、页面、PV/UV/Track、事件

  2. 可以公用的模块有哪些?一种木块有几种展示类型?因此至少需要两个以上的typeId才能区分。

  3. 页面与模块通过Id组合起来。

  4. 数据埋点与页面组合。

  5. 事件系统怎么处理。页面上的操作处理。

  6. 其他....

项目实施
考虑一下几个问题:

  1. 项目如何分期实现?

  2. 前面几个版本如何迭代?

  3. 如何快速验证我们的想法是否正确?

  4. 安排多少人开发,多少人继续维护这个项目?

遗留问题

  1. 该项目只能覆盖部分活动,还有很多活动不通用,人们的需求总在不断变化。

  2. 越来越多的模块需要维护,维护难度也很大。

  3. 其他...

总结
我这里只是简单的举个例子,怎么去解决这个项目问题,希望有更多的方案。欢迎大家吐槽...

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
宣传栏