# 代码模板管理

模板机制是应用在较为严格的工程规范之下,在不熟悉情况下,请勿根据个人喜好进行模板改造。

# 概述

代码插件库,用于集成多种插件模板,集成到工程生成器中,形成统一的管理风格,类似于helm或者wordpress的插件原理类似

使用类似于spring-boot-starter方式加载工程,模板机制跟starter机制有一定的区别,这里是针模板源码更新到工程, 而不是jar包依赖的形式,主要是方便进一步调试处理,另一方面,这里的模板理解成工程一部分,工程里面统称为plugin。

# 集成模板

序号 模板类型 模板名称 模板基线目录 备注
1 功能模板 Flowable工作流插件 alinesno-plugin-flowable 整合中
2 CMS内容管理插件 alinesno-plugin-cms 整合中
3 电子商务插件 alinesno-plugin-shop 整合中
4 微信支付插件 alinesno-plugin-wxpay 整合中
1 插件模板 Nacos插件 alinesno-plugin-nacos 整合中
2 Elasticsearch插件 alinesno-plugin-elastichsearch 整合中
3 整合Ip2region包 alinesno-plugin-ip2region 整合中
1 前端模板 人事首页插件 alinesno-plugin-homepage 整合中
2 业务通用首页插件 alinesno-plugin-business 整合中
3 数据报表首页插件 alinesno-plugin-datareport 整合中
9 示例工程 示例工程 alinesno-plugin-demo 整合中

# 模板场景

模板处理的场景如下,处理的方式主要考虑因素如下:

  • 模板为工程一部分,而非公共部分;
  • [重点]模板的维护职责下放到项目组,明确平台与项目组职责划分;
  • 工程的个性化配置和自主性,同样为了明确职责划分;
  • 模板在有相对稳定或者公共部分,依赖团队抽取成jar/npm等;

注意:模板机制参考的是wordpress机制进行管理,而非starter机制。

# 模板规范

为了更便于模板的管理和维护,模板总共分为几类型:

  • 功能模板[function]:功能模板即带有对应的功能处理,数据库处理,页面处理等,形成一个功能原子,需分带有api/domain/ui模板
  • 组件模板[component]:组件模板类似于starter组件,依赖即可运行,类似于后台处理的组件,也可以当api/ui模板
  • 前端模板[front]:前端模板是一个较为完整的模板,即为一个原子进行,可与后台交互,也可以不和后台交互,形成一个模板;
  • [集成中]移动模板[uniapp]:移动模板即针对于移动app模板,形成移动端的前端模板,这里指的是uniapp。

# 目录规范

目录规范是针对于模板与工程的目录规范,模板统一放到工程的alinesno-plugins目录下面。

# 名称规范

这里定义了基本的名称规范配置:

  1. 模板模板名称:
alinesno-plugin-[function]-api        # 功能模板api
alinesno-plugin-[function]-domain     # 功能模板领域
alinesno-plugin-[function]-ui         # 功能模板前端
alinesno-plugin-[function]-component  # 组件模板
alinesno-plugin-[function]-uni        # 移动模板

比如flowable工作流功能模板,示例如下:

alinesno-plugin-flowable-api        # 功能模板api
alinesno-plugin-flowable-domain     # 功能模板领域
alinesno-plugin-flowable-ui         # 功能模板前端
  1. 坐标定义规范
<!-- 以api坐标为例定义 -->
<groupId>com.alinesno.cloud.plugin</groupId>
<artifactId>alinesno-plugin-plugin-[function]-api</artifactId>
  1. 模板调试规范
  • 模板的调试可使用test进行主类调试,打包过程不会含有test目录;
  • 模板中不能包含main方法,统一使用junit调试;
  1. 模板读取定义

模板读取定义是为了让生成器读取,类似于jenkins-plugins插件的读取机制,这里平台会读取公共的git文件配置,这里通过yaml定义,定义规划如下:

type: function  #function功能模板|component组件模板|front前端模板|uniapp移动模块
classes: 001
screen: 001
industry: 002
name: Flowable工作流模板  # 模板名称
desc: 集成Flowable工作流模块,快速集成  # 模板描述
team: ACP团队研发 # 团队信息

每个模板定义在工程下面,过程会通过基线读取

# 其它