整体架构设计 V1.0

范围

整体设计,架构设计,没有细节

模块设计

模块关系图

  • B端是前后端分离开发,受众不是大众所以不采用SSR模式开发,如果H5的编辑器比较复杂,可以拆分成单独项目进行开发。
  • C端采用的是SSR模式开发,一个原因是性能的考虑,另一个方面受众人数较多。
  • 组件库独立出来作为一个第三方项目,B端的编辑器和C端共用一个组件库进行H5页面的渲染。所见即所得,B端编辑好页面后,C端也可以复用组件库进行渲染,达到视觉统一,降低开发成本。
  • 管理后台采用前后端分离开发,内部人员使用,主要用来进行B端和C端的数据管理,数据统计,可以让运营人员把控产品的全局。
  • 自研统计服务,统计一些自定义事件,供B端和使用后台管理系统的人员知道产品的走向。
    • 自研统计服务主要是因为市面上支持自定义事件的统计服务大而全,而且价格昂贵,我们只需要有选择的开发一些满足自生需求的统计就行。

核心数据结构

单个组件应该使用vnode规范,使用业界统一规范有助于我们少踩一些坑,并能得到扩展性较强的组件结构。vuex store 的大概结构如下:

{
    // 作品
    work: {
        title: '作品标题',
        setting: { /* 一些可能的配置项,用不到就先预留 */ },
        props: { /* 页面 body 的一些设置,如背景色 */ },
        components: [
            // components 要用数组,有序结构

            // 单个 node 要符合常见的 vnode 格式
            {
                id: 'xxx', // 每个组件都有 id ,不重复
                name: '文本1',
                tag: 'text',
                attrs: { fontSize: '20px' },
                children: [
                    '文本1' // 文本内容,有时候放在 children ,有时候放在 attrs 或者 props ,没有标准,看实际情况来确定
                ]
            },
            {
                id: 'yyy',
                name: '图片1',
                tag: 'image',
                attrs: { src: 'xxx.png', width: '100px' },
                children: null
            },
        ]
    },

    // 画布当前选中的组件
    activeComponentId: 'xxx'
}

数据流转关系图

使用统一的数据库管理数据,B端产生组件的配置数据存入数据库并发布项目,C端读取组件配置数据渲染出H5页面供用户访问,管理后台通过管理数据库的数据达到控制B端和C端的目的。

扩展性保证

  • 数据结构层面
    • 一些可能的整体项目级别配置项。主要是是否可编辑,是否锁定等等。
    • 一些页面级别的配置参数,大小,背景色之类的。
  • 编辑器层面
    • 保证组件的可扩展性,组件的锁定,可选,图层等等后续必要的扩展功能。

开发提效

  • 脚手架固化一些重复操作,规范流程,提高开发效率。
    • 创建项目的流程
    • 提交代码的流程
    • 测试项目的流程
    • 打包项目的流程
    • 发布项目的流程
  • 组件平台主要固化组件的开发和发布流程,提升组件开发效率。

运维保障(待补充)

  • 线上服务和运维服务
  • 安全
  • 监控和报警
  • 服务扩展性:流量大
Copyright © imooc-lego (2020 - present) all right reserved,powered by GitbookFile Modify: 2021-06-27 08:04:56

results matching ""

    No results matching ""