架构方案设计 V1.0

需求

https://www.yuque.com/imooc-lego/zlz87z

范围

需要的项目

B 端和编辑器,做前后端分离

  • biz-editor-fe
  • biz-editor-server H5 适合做 SSR,因为要考虑性能
  • H5-server 管理后台,做前端分析
  • admin-fe
  • admin-server

独立的业务组件库

编辑器画布使用的组件和渲染逻辑,和 H5 页面是完全一样的,因此,把业务组件库抽离出来,给画布和 H5 使用。

自研统计服务

我们需要实现分渠道统计,实现这个功能,就需要自定义事件统计。

  • 支持自定义事件统计
  • 支持 Open API 经调研发现,市面上的第三方统计服务,要么不支持,要么收费太贵。综合对比,选择自研。包括:
  • 日志收集
  • 日志分析
  • Open API

模块设计

模块设计图

核心数据结构

数据结构思路

  • 每个组件尽量符合 vnode 规范
  • 用数组来组织数据,有序
  • 尽量使用引用关系,不要冗余

数据结构示例

{ 
    work: { 
        title: '作品标题', 
        setting: { }, // 一些可能的配置项,扩展性保证 
        props: { }, // 页面 的一些设置,扩展性保证 
        components: [ 
            { 
                id: 'xxx', 
                name: '文本1', 
                tag: 'text', 
                attrs: { 
                    fontSize: '20px' 
                }, 
                children: [
                    '文本1' 
                ] 
            }, 
            { 
                id: 'yyy', 
                name: '图片1', 
                tag: 'image', 
                attrs: { 
                    src: 'xxx.png', 
                    width: '100px' 
                }, 
                children: null 
            }, 
        ] 
    }, 
    // 画布当前选中的组件 
    activeComponentId: 'xxx' 
}

数据流转关系图

核心:B 端、C 端、管理后台,共用一个数据库

  • 创建作品:初始化一个 JSON 数据
  • 保存作品:修改 JSON 数据
  • 发布作品:修改一个标记,仅此而已
  • C 端浏览作品:获取 JSON 数据,SSR 渲染页面
  • 屏蔽作品:修改一个标记,C 端来判断

    数据流转关系图

扩展性保证

  • 扩展组件
  • 扩展编辑器的功能,如组件隐藏、锁定
  • 扩展页面的配置,如增加多语言
  • 扩展其他功能,如大数据计算

研发提效

  • 脚手架:创建、发布
  • 组件平台:代码复用,对业务组件进行抽象,积累业务组件

运维保障

  • 线上服务和运维服务
  • 安全
  • 监控和报警
  • 服务扩展性:基于云服务,可以随时扩展机器和配置
Copyright © imooc-lego (2020 - present) all right reserved,powered by GitbookFile Modify: 2021-06-27 08:04:56

results matching ""

    No results matching ""