里程碑3 基于vue3完成领域模型架构建设

0 阅读2分钟

本文来源于 哲玄前端(抖音ID:44622831736)大前端全栈实践课程

为解决重复性工作,该方案通过配置解决80%的共性页面,通过提供扩展解决另外20%个性化功能。该项目为SSR和CSR混合,通过SSR提供多页面入口,其中各页面入口中采用CSR,通过路由进行SPA。

  • DSL: dashboard模板配置 (数据驱动设计)

  • dashboard模板页

    • 配置解析器 +vue-router (前端路由)(CSR)
  • 结构设计

    • 首页含若干菜单项,菜单项目两种类型 module(单个页面入口)、group(多个页面入口,提供subMenu递归配置),菜单显示提供4类页面 Schema-View (配置页面)、 iframe-View(第三方页面) 、Custom-View(自定义页面),包含子菜单的sider(里面又含另外3类页面)
    • 通过一份json配置生成一个系统,为了减少配置,采用类继承的思想,创建多个基类维护共有的功能,再单独添加个性化的配置。
    • 其中schemaView严格按照jsonSchema标准,获取配置数据进行解析生成页面。

整个章节围绕dsl的结构展开,重点理解配置的数据结构。

大致流程:

dsl结构如下:

页面表现:

与平时常见的开发不同,平时的表格开发是基于配置,各自独立开来,searchBar,table,api,database各自开发,比较耗时。

该项目架构主张从一份数据源出发(单表),由数据源的配置生成searchBar,table,api,database且保留扩展项,对字段进行描述即可(xxOption,xxConfig)。

补充知识:

路由的动态引入(懒加载)

  • ()=> import ('xxx.vue') webpack打生产包时,将需要动态引入的部分通过正则匹配单独打包。

路由由hash改为history的原因:

  • 需要获取接口query值插入全局变量

  • 后续登录操作需要传达callbackUrl给后端,后端不能识别#后面的内容

保留可扩展性

  • dsl中可添加 mode(如dashboard)
  • 添加customView(如todo),iframeView
  • schema中添加FieldKey.xxxOption和xxxConfig进行配置解析
  • 添加外部组件form,dialog...和searchbar的类型(input,select...)
  • 工具库(utils,curl...)