基于Json Schema的动态数据治理神器-DMS
引见
什么是DMS?
DMS Github:基于Json Schema/UI Schema模块化
的Json动态数据治理平台。
什么是Json Schema/UI Schema?
- 用于动态天生表单的Schema,参考 Json Schema运用案例
- 官方文档
运用场景有哪些?
不管前端、后端、挪动端、运维,理论上一切须要动态设置数据的场景都能够运用。
针对前端、挪动端:能够设置页面每一个模块展现型数据,也能够设置种种版本号用于动态更新,种种功用开关、页面主题等。
针对后端:能够设置营业相干的ID,设置类目,都市列表,热点等。
针对运维:能够作为辨别环境的设置中间等。
固然运用场景远不止这些……
能够运用到临盆环境吗?
固然能够,DMS存储的数据读写是完整离开的,现在支撑经由过程Redis、CDN(引荐)两种猎取数据体式格局。纵然DMS自身效劳器挂掉,也不会影响数据的读取。强烈引荐运用CDN的体式格局,如许稳定性和运用的CDN是一样的。
DMS运用、模块、参数引见
- 运用:包括一个或多个模块,包括一个或多个参数
- 模块:设置数据的最小单元
- 参数:使模块依据差别参数设置差别数据(如:每一个都市展现的频道页不一样)
DMS特征
- 及时表单预览;
- 模块化(组件化)数据治理;
- 支撑表单数据逻辑推断、数据考证;
- Schema数据自动保留,防备误操作及未知非常;
- 支撑动态增添参数,参数自身也能够为DMS天生的设置数据;
- 合营dms-upload能够疾速将经由过程表单上传的文件传入CDN/云存储
- 符合实际场景的权限掌握:开辟只担任schema编写,需求方设置一切数据;
- 支撑Schema天生一切基础表单范例及高等控件,如:日期挑选器、进度条、暗码框、色彩挑选器等;
- 及时数据预览/考核(合营dms-fetch,同时支撑效劳端代办请求,及浏览器端请求的数据预览与考核)
疾速最先
请先确保已装置好:nodejs8+、mysql、redis,并已开启相干效劳
装置DMS
> git clone https://github.com/win-winFE/dms.git
> yarn # 若没有yarn,请运用 npm install
建立日记目次
> mkdir /opt/logs/nodejs -p
实行初始化sql
- 运用mysql实行 dms/database/dms.sql
- 修正项目中mysql/redis相干设置dms/config/config.default.js(mysql默许暗码为:root1234)
启动/住手/调试
启动端口默许为:7101,须要修正请修正dms/package.json文件start部份的7101
> yarn start # 启动,若没有yarn,请运用 npm run start
> yarn stop # 住手, npm run stop
> yarn dev # 调试,npm run dev
注册
进入:http://localhost:7101,将自动跳转到登录页,挑选【注册】,按请求填写相干数据,注册胜利将自动跳转到【运用治理】页面
新建示例运用
点击【新建运用】,新建以下运用
新建示例模块
点击“淘宝首页”的【模块列表】,点击【新建模块】
编写该模块Schema
点击“首页banner”的【编辑Schema定义】,复制以下Schema到【Schema定义】中并【保留Schema】
{
"title": "示例",
"description": "视频/图片展现设置示例",
"type": "array",
"minItems": 3,
"items": {
"type": "object",
"properties": {
"url": {
"title": "跳转链接",
"type": "string"
},
"imgs": {
"title": "轮播图片",
"type": "string",
"format": "file"
}
}
}
}
增加一个参数
进入【参数列表】,增加以下参数
【编辑参数】,【提交】以下参数
编辑数据
点击左边菜单,进入【数据治理】,进入“淘宝首页”运用的【模块列表】,挑选都市后点击【进入】,再挑选“首页banner”的【编辑模块数据】,此时还不能上传图片、保留数据,须要启用dms-upload
启动dms-upload
> git clone https://github.com/win-winFE/dms-upload.git
> yarn # npm install
实行初始化sql
- 运用mysql实行 dms-upload/database/dms-upload.sql
- 运用mysql实行 dms-upload/database/init.sql(用于上传时的权限考证,默许:root root1234)
- 修正项目中mysql/redis相干设置dms/config/config.default.js(mysql默许暗码为:root1234)
设置dms-upload
- 启动端口(默许7100):dms-upload/package.json start部份,若修正端口。请修正 dms/app/util/constants.js dmsUploadAPI 中的请求地点前缀
- 数据库设置:dms-upload/config/config.defult.js
- CDN文件保留目次(默许/usr/local/services/cdn/dms):dms-upload/config/config.defult.js cdnDir
- CDN文件接见地点前缀(默许//127.0.0.1:5000/dms):dms-upload/config/config.defult.js cdnPrefix
新建CDN文件(图片、json数据)保留目次
> mkdir /usr/local/services/cdn/dms/data -p # 若未运用默许cdnDir,请修正data前面部份
> mkdir /usr/local/services/cdn/dms/res -p # 若未运用默许cdnDir,请修正res前面部份
启动dms-upload
> yarn start # npm run start
当地调试上传图片回显
> cd /usr/local/services/cdn
> python -m SimpleHTTPServer 5000 # python3 请运用: python3 -m http.server 5000
继承回到DMS平台编辑数据
提交以下数据
直接接见数据(用于非js运用场景)
暂时数据:提交后复制胜利Toast中的链接,能够直接接见暂时数据数据
正式数据:将暂时数据考核为正式数据,也能够经由过程Toast中的链接直接接见正式数据
运用dms-fetch接见数据(用于js运用场景)
1.项目中装置dms-fetch(不发起,强依靠axios,申明见Github)
> yarn add dms-fetch # npm install dms-fetch --save
2.带参数运用示例(伪代码)
import { getDMSDataByCDN } from 'dms-fetch';
import ...
// 复制编辑数据页面的唯一标示,下面是React运用合营运用DMS参数的示例
export default class extends React.Component {
...
fetchData = async () => {
const { city } = getParams(this.props.location.search);
const dmsData = await getDMSDataByCDN(`/7/10/city/${city}`, this.props.location.search);
this.setState({
dmsData,
});
};
...
render() {
...
}
}