前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候

基于Json Schema的动态数据治理神器-DMS

引见

什么是DMS?

DMS Github:基于Json Schema/UI Schema模块化的Json动态数据治理平台。

什么是Json Schema/UI Schema?

运用场景有哪些?

不管前端、后端、挪动端、运维,理论上一切须要动态设置数据的场景都能够运用。

针对前端、挪动端:能够设置页面每一个模块展现型数据,也能够设置种种版本号用于动态更新,种种功用开关、页面主题等。

针对后端:能够设置营业相干的ID,设置类目,都市列表,热点等。

针对运维:能够作为辨别环境的设置中间等。

固然运用场景远不止这些……

能够运用到临盆环境吗?

固然能够,DMS存储的数据读写是完整离开的,现在支撑经由过程Redis、CDN(引荐)两种猎取数据体式格局。纵然DMS自身效劳器挂掉,也不会影响数据的读取。强烈引荐运用CDN的体式格局,如许稳定性和运用的CDN是一样的。

DMS运用、模块、参数引见

  • 运用:包括一个或多个模块,包括一个或多个参数
  • 模块:设置数据的最小单元
  • 参数:使模块依据差别参数设置差别数据(如:每一个都市展现的频道页不一样)

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

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,将自动跳转到登录页,挑选【注册】,按请求填写相干数据,注册胜利将自动跳转到【运用治理】页面

新建示例运用

点击【新建运用】,新建以下运用

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

新建示例模块

点击“淘宝首页”的【模块列表】,点击【新建模块】

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

编写该模块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"
      }
    } 
  }
}

增加一个参数

进入【参数列表】,增加以下参数

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

【编辑参数】,【提交】以下参数

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

编辑数据

点击左边菜单,进入【数据治理】,进入“淘宝首页”运用的【模块列表】,挑选都市后点击【进入】,再挑选“首页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平台编辑数据

提交以下数据

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

直接接见数据(用于非js运用场景)

暂时数据:提交后复制胜利Toast中的链接,能够直接接见暂时数据数据

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

正式数据:将暂时数据考核为正式数据,也能够经由过程Toast中的链接直接接见正式数据

《前端、后端、运维都能用的动态json数据管理神器,节约你大批的开辟、设想数据库、运维的时候》

运用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() {
       ...
    }
}

更多高等用法请参考 DMS Github

    原文作者:Gavin1995
    原文地址: https://segmentfault.com/a/1190000018701718
    本文转自网络文章,转载此文章仅为分享知识,如有侵权,请联系博主进行删除。
点赞