基于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,说明见QA)

> 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

转载于:https://juejin.im/post/5c9dbc77e51d453e8b7f6be6

前端、后端、运维都能用的动态 json 数据管理神器,节省你大量的开发、设计数据库、运维的时间...相关推荐

  1. oracle运维平台开发,Oracle数据库运维

    1.未提交事务引起的表的行锁 1.1.判断哪个SESSION执行了DML(Insert/Update/Delete) 但是未提交 (Commit ),引起的行锁 --找到修改了数据,但是未提交的Ses ...

  2. 美团数据库运维自动化系统构建之路

    本文整理自美团点评技术沙龙第10期:数据库技术架构与实践. 美团点评技术沙龙由美团点评技术团队主办,每月一期.每期沙龙邀请美团点评及其它互联网公司的技术专家分享来自一线的实践经验,覆盖各主要技术领域. ...

  3. typecho和wordpress模板了解、开发流程介绍、前台后台前端后端区分

    网站模板搭建网站: 使用网站模板搭建网站很简单,只需要将相关文件放到你自己的服务器上面,之后在进行相关的配置即可.这里给大家介绍两款网站模板: typecho: 是一个轻量高效,简单操作就能搭建网站的 ...

  4. 【总结】1438- 你想知道的前后端协作规范都在这了

    一. 前言 你是否在为如何制定前后端协作规范而发愁?干货来啦,一文带你了解我们团队内部沉淀并践行已久的前后端协作规范,读完本文,回去大胆拒绝你后端的不合理设计! 二. 为什么需要协作规范? 假如你要在 ...

  5. 你想知道的前后端协作规范都在这了

    一. 前言 你是否在为如何制定前后端协作规范而发愁?干货来啦,一文带你了解我们团队内部沉淀并践行已久的前后端协作规范,读完本文,回去大胆拒绝你后端的不合理设计! 二. 为什么需要协作规范? 假如你要在 ...

  6. 微信网页开发-长按二维码无法识别问题解决

    微信网页开发-长按二维码无法识别问题解决 参考文章: (1)微信网页开发-长按二维码无法识别问题解决 (2)https://www.cnblogs.com/Tylerrrkd/p/9153949.ht ...

  7. linux运维-BS模型|前端|后端|数据库都是干嘛的?

    BS模型 最近陷入疯狂的画图中,模拟一个信息管理系统开发的流程,来了解运维和数据库模块的工作内容(没有项目可以做,就自己创造项目啊) 基于目前都是BS模型的web开发,即用浏览器登录系统,而不是下载客 ...

  8. 【前端后端运维】Web开发人员学习路线,汇总整理

    1.developer-roadmap 参考:developer-roadmap 项目地址:https://github.com/kamranahmedse/developer-roadmap --- ...

  9. (已更新)运势运程小程序v1.2.0 功能模块+微信小程序+前端+后端+新增每日星座卡片

    运势运程算命小程序 v1.2.0 完整版+微信小程序+前端+后端 运势运程算命小程序开源源码最新更新日志: 新增测算栏目支付成功模版消息提醒,增加留存率.新增每日星座卡片.单向历,请求缓存解决请求慢问 ...

最新文章

  1. TricycleGAN:基于形状先验的无监督图像合成和分割
  2. 戴尔t410支持哪些服务器系统,DELL服务器T410
  3. 深度学习-Tensorflow2.2-tf.data输入模块{2}-tf.data基础用法-09
  4. java 陷阱,java 中的陷阱。
  5. 学会了CopyOnWriteArrayList可以再多和面试官对线三分钟
  6. 简单实现TabBar的自定义
  7. MatLab的排序函数-sort
  8. linux光驱安装内核,Linux的内核管理--之光盘恢复grub的方法
  9. win11如何设置并排显示窗口 windows设置并排显示窗口的方法步骤
  10. 分布式存储系统学习笔记(一)—什么是分布式系统(1)—基本概念
  11. WordPress插件:WP-China-Yes解决国内访问官网慢的方法
  12. 高速公路车路协同网络需求研究
  13. 基于stc89c52的智能温控风扇
  14. 生物计算机教学,信息技术与高中生物教学的整合
  15. python3换行符_python的换行符
  16. OSX:隐藏文件或文件夹
  17. python|excel分列--部分分列(pandas,concat)
  18. 米的换算单位和公式_小学数学单位换算公式(附练习题)
  19. Android之集成极光推送消息
  20. 海淀区第九届单片机竞赛获奖名单_第九届蓝桥杯国赛电子类单片机设计与开发组获奖名单...

热门文章

  1. linux中sudo命令_Linux中的Sudo命令
  2. swift扩展_Swift扩展
  3. junit5和junit4_JUnit声明异常– JUnit 5和JUnit 4
  4. 熊猫DataFrame from_dict()–字典到DataFrame
  5. Java进阶必备,人人都能听懂的JVM
  6. Java基础:String类支持几种构造函数?
  7. 【iOS开发】Alamofire框架的使用二 高级用法
  8. HTML(八)------ 布局
  9. Redis--发布订阅
  10. linux应用之Lamp(apache+mysql+php)的源码安装(centos)