Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
https://github.com/bugszhou/data-model-service
基于JSON Schema的JavaScript数据模型服务
https://github.com/bugszhou/data-model-service
Last synced: 1 day ago
JSON representation
基于JSON Schema的JavaScript数据模型服务
- Host: GitHub
- URL: https://github.com/bugszhou/data-model-service
- Owner: bugszhou
- Created: 2019-08-26T07:25:56.000Z (over 5 years ago)
- Default Branch: master
- Last Pushed: 2023-02-28T07:25:12.000Z (almost 2 years ago)
- Last Synced: 2024-11-28T09:33:28.199Z (about 2 months ago)
- Language: HTML
- Size: 1.61 MB
- Stars: 0
- Watchers: 2
- Forks: 1
- Open Issues: 17
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
Awesome Lists containing this project
README
## data-model-service
----------------------------数据模型服务:主要解耦前后端数据交互出现的问题:
* 如果后端接口传递的数据嵌套很多层,前端在使用时会出现很多防御性代码;
例如,后端接口数据:
```javascript
{
user: {
friends: [
{
name: '小明',
age: 12
}
]
}
}
```
前端在请求接口拿到数据后:
```javascript
const data = {
user: {
friends: [
{
name: '小明',
age: 12
}
]
}
}
// 获取第一个好友的姓名:
const friendName = data.user.friends[0].name;
```
上述例子存在以下几个问题:1. 链式调用很长难以理解
2. 要书写很多防御性代码
3. 链式调用需要保证每个环节必须有值,否则会抛出异常。如果`friends`为空数组,那么`data.user.friends[0]`的值就是`undefined`,此时如果没有防御性代码,取`name`值就会报错,导致之后的代码无法运行* 解决空数据使用默认值
### 使用案例
```javascript
import DataModel from 'data-model-service';const userDataIns = new DataModel(userModel);
const originData = {
names: {
friends: ['张三', '王五', '李四']
},
age: 12,
}
};const userData = userDataIns.parse(originData);
// userData的值为:
{
name: {
friend1: '张三',
},
age: '12',
}
```### 使用文档
[点击查看](./docs/usual.md)