1.5.0 • Published 3 years ago
m2-core v1.5.0
m2-core
用法
- 安装
npm install m2-core
APIs
- getDataApi 获取应用程序API地址映射对象。
- 提示1:可配置mock api, 在实际开发过程中,部分api是mock实现的,则可传入mock参数(也可指定mock api前缀),如果同时出现在config和mock中以mock优先
- 提示2:可配置第三方api, 在实际开发过程中,可能有些api不是应用本身而是来源于第三方,可统一配置到config下面的某个字段,并在prefix参数的key中配置
参数 | 类型 | 描述 | 默认值 | 示例 |
---|---|---|---|---|
config | object | api键值对配置 | — | { 'getDictList': '/dict','getDataList': '/home/data_list', 'getDataItem': '/home/data_item' } |
prefix | string/object | api前缀 | — | '/api' |
mock | array/object | mock对象 | — | '/user/list', '/product/detail', { prefix: '/mock-api', urls: '/user/list', '/product/detail' } |
// api.conf.js
import { getDataApi } from 'm2-core'
// no mock api
export default getDataApi({
getDictList: '/dict/list',
getDataList: '/home/data_list',
getDataItem: '/home/data_item',
user: {
list: '/user/list',
detail: '/user/detail'
},
product: {
list: '/product/list',
detail: '/product/detail',
category: '/product/category'
}
}, '/api')
// with multi api
export default getDataApi({
// 建议将其他api都归类到common下
common: {
getDictList: '/dict/list',
getDataList: '/home/data_list',
getDataItem: '/home/data_item',
},
user: {
list: '/list',
detail: '/detail'
},
product: {
list: '/list',
detail: '/detail',
category: '/category'
}
}, {
multi: true,
user: '/api/user',
product: '/api/product',
common: '/api'
})
// with mock api
export default getDataApi({
getDictList: '/dict/list',
getDataList: '/home/data_list',
getDataItem: '/home/data_item',
user: {
list: '/user/list',
detail: '/user/detail'
},
product: {
list: '/product/list',
detail: '/product/detail',
category: '/product/category'
}
}, '/api', [
'/user/list',
'/product/detail'
])
export default getDataApi({
getDictList: '/dict/list',
getDataList: '/home/data_list',
getDataItem: '/home/data_item',
user: {
list: '/user/list',
detail: '/user/detail'
},
product: {
list: '/product/list',
detail: '/product/detail',
category: '/product/category'
}
}, '/api', {
prefix: '/mock-api',
urls: [
'/user/list',
'/product/detail'
]
})
// with exclude api
export default getDataApi({
getDictList: '/dict/list',
getDataList: '/home/data_list',
getDataItem: '/home/data_item',
user: {
list: '/user/list',
detail: '/user/detail'
},
product: {
list: '/product/list',
detail: '/product/detail',
category: '/product/category'
},
others: {
maps: '/google/map',
books: '/amazon/books'
}
}, {
prefix: '/api',
// key: 'others' // default value,
// the same as params **config** last prop
})
- DataEnv 应用程序多环境配置变量。
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
IsDev | boolean | 是否为开发环境 | if (IsDev) { //:todo } |
getBuildEnv | func | 获取当前应用编译环境 | getBuildEnv() |
getEnvAlias | func | 获取环境变量别名 | getEnvAlias() |
getEnvConfig | func | 获取当前环境指定配置项的值,如果未指定配置项,则获取当前环境的所有配置 | getEnvConfig('api') |
// env.conf.js
export default {
loc: {
api: 'http://test.app.oa.com/m2',
// support multi-api config(you need to add apiKey, eg:'mock', 'app')
// api: {
// mock: 'http://test.app.oa.com/m2/mock',
// app: 'http://test.app.oa.com/m2'
// }
},
dev: {
api: 'http://dev.app.oa.com/m2'
},
sit: {
api: 'http://sit.app.oa.com/m2'
},
uat: {
api: 'http://uat.app.oa.com/m2'
},
prd: {
api: 'http://app.oa.com/m2'
}
}
- DataEvent 通用事件处理。
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
scroll | func | 注册滚动事件 | DataEvent.scroll(() => { console.log('scrolling');}, {threshold: 50}) |
throttle | func | 注册截流事件 | DataEvent.throttle(() => { console.log('throttle');}, 3000) |
debounce | func | 注册防抖事件 | DataEvent.debounce(() => { console.log('debounce');}, 3000) |
- DataBus 数据总线处理。
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
on | func | 监听事件处理函数 | DataBus.on('data', (res) => { console.log(res.name);}) |
off | func | 移除事件处理函数 | DataBus.off('data'}) |
emit | func | 触发事件 | DataBus.emit('data', { name: 'm2' }}) |
- DataType 检测数据类型和处理类型转换。
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
isObject | func | 检测是否为对象 | DataType.isObject({ name: 'm2'}) |
isPlainObject | func | 检测是否为普通对象(非内置或非window对象) | DataType.isPlainObject({ name: 'm2' }) |
isEmptyObject | func | 检测是否为空对象(null,{}) | DataType.isEmptyObject({}) |
isArray | func | 检测是否为数组 | DataType.isArray({ name: 'm2' }) |
isEmptyArray | func | 检测是否为空数组 | DataType.isEmptyArray([]) |
isFunction | func | 检测是否为函数 | DataType.isFunction(()=>{console.log('m2')}) |
isEmptyFunction | func | 检测是否为空函数 | DataType.isFunction(()=>{}) |
isString | func | 检测是否为字符串 | DataType.isString('m2') |
isNumber | func | 检测是否为数字 | DataType.isNumber(100) |
isBoolean | func | 检测是否为布尔值 | DataType.isBoolean(true) |
isGuid | func | 检测是否为Guid | DataType.isGuid('a0da5831-7488-464d-8a89-db89b7ff8f2b') |
isMobilePhone | func | 检测是否为手机号(可自定义正则检测) | DataType.isMobilePhone('13366668888') |
isTelPhone | func | 检测是否为电话号码(可自定义正则检测) | DataType.isTelPhone('010-66668888') |
isPhone | func | 检测是否为手机号或电话号码(可自定义正则检测) | DataType.isPhone('010-66668888') |
isEmail | func | 检测是否为电子邮件(可自定义正则检测) | DataType.isEmail('12345678@qq.com') |
isIdCard | func | 检测是否为身份证号(可自定义正则检测) | DataType.isIdCard('511381198808083520') |
isValidPassword | func | 检测是否为合法密码(可自定义正则检测) | DataType.isValidPassword('1988_$abd') |
isValidDate | func | 检测是否为合法日期 | DataType.isValidDate('2020-01-20') |
isTrueOrZero | func | 检测是否为true或0 | DataType.isTrueOrZero('0') |
- DataFetch 基于axios封装的http请求(单一实例)。
- 提示:已转为内部调用,在实际开发过程中推荐使用DataHttp。
属性/方法 类型 描述 示例 create func 创建axios的实例 DataFetch.create({ retry, retryDelay, timeout, headers, responseType, ... }) axios func 发送http请求 DataFetch.axios('/api/user/list', { baseUrl, env, proxy, apiKey, method, timeout, headers, params }) all func 合并发送多个http请求 DataFetch.all({url: '/api/user', config: { params, loading }}, {url: '/api/product', config: { params, loading }}) - DataHttp 基于DataFetch封装的http请求(多实例)。
- 提示:在实际开发过程中推荐使用DataHttp,首先需要创建一个DataHttp实例http,然后通过实例去调用
- 提示:配置参数包含很多(baseUrl, env, proxy, apiKey, method, timeout, headers, params, origin, responseType),但比较常用的也就是params, loading, origin, responseType
import { DataHttp } from 'm2-core'
// import { env } from './index'
export default DataHttp.getInstance({
// 是否开启多实例
// multi: true,
// 开启应用上下文
ctx: true,
// 开启多环境配置
// env,
// 当前请求实例(可使用DataHttp构建,也可配置详细参数,参考axios配置)
axios: DataHttp.create({
// baseURL: conf('api'),
headers: {
'swagger': 'm2-data-http'
}
}),
// 数据响应映射(当返回数据不满足{status,result,message}格式时,对返回数据字段映射)
// 当status字段是boolean时,不必配置value;反之需要同时配置status和value来做成功标识;当不存在status和value都不存在,可配置success(res)函数自定义成功标识
map: { status: 'code', result: 'data', message: 'msg', value: 1 }
// 当前加载器函数(覆盖默认加载器,loading当前请求是否启动加载器)
// spinner(loading) {},
// 数据校验函数(对返回数据的权限校验,app为应用上下文,返回boolean)
// check(res, app) {}
// 数据处理函数(对返回数据的处理函数,app为应用上下文, 返回处理结果)
// handle(res, app) {}
// 全局错误处理函数(err是包含title,message的对象,app为应用上下文)
// error(err, app) {}
})
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
get | func | 发送get请求 | http.get('/api/user', { params, loading, origin } ) |
post | func | 发送post请求 | http.post('/api/user', { params, loading, origin } |
put | func | 发送put请求 | http.put('/api/user', { params, loading, origin } |
patch | func | 发送patch请求 | http.patch('/api/user', { params, loading, origin } |
del | func | 发送del请求 | http.del('/api/user', { params, loading, origin } |
all | func | 合并发送多个http请求 | http.all({url: '/api/user', config: { params, loading, origin }}, {url: '/api/product', config: { params, loading, origin }}) |
proxyGet | func | 代理发送get请求 | http.proxyGet('/api/user', { params, loading, origin } |
proxyPost | func | 代理发送post请求 | http.proxyPost('/api/user', { params, loading, origin } |
proxyPut | func | 代理发送put请求 | http.proxyPut('/api/user', { params, loading, origin } |
proxyPatch | func | 代理发送patch请求 | http.proxyPatch('/api/user', { params, loading, origin } |
proxyDel | func | 代理发送del请求 | http.proxyDel('/api/user', { params, loading, origin } |
proxyAll | func | 代理合并发送多个http请求 | http.proxyAll({url: '/api/user', config: { params, loading, origin }}, {url: '/api/product', config: { params, loading, origin }}) |
proxy | func | 代理发送http请求 | http.proxy.get/post/put/patch/del('/api/user', { params, loading })/http.proxy.all({url: '/api/user', config: { params, loading, origin }}, {url: '/api/product', config: { params, loading, origin }}) |
配置参数详解
参数 | 类型 | 描述 | 默认值 | 示例 |
---|---|---|---|---|
params | object | 请求参数 | —— | { id: 'm2', name: 'm2-core' } |
loading | boolean | 是否启用加载器效果 | false | —— |
origin | boolean | 是否需要返回请求原始数据 | false | —— |
query | boolean | 是否将请求字符串中的参数转化为params | true | —— |
responseType | string | 请求响应类型(目前只支持类型: 'blob'-下载文件) | '' | —— |
file | string | 下载的文件名(不包含后缀) | '' | —— |
headers | object | 配置请求的headers | —— | —— |
timeout | number | 当前请求的超时毫秒数(默认30秒) | 30000 | —— |
key | boolean | 是否需要添加标识列_key(随机字符串) | false | —— |
keyLen | number | 标识列的长度 | 5 | —— |
retry | number | 自动重试次数(为0代表不重试) | 3 | —— |
retryDelay | number | 再次重试的延迟毫秒数(默认1秒) | 1000 | —— |
itemsName | string | 返回列表标识字段名(包含在data中) | 'list' | —— |
- DataStorage 统一提供封装LocalStorage(默认)和SessionStorage。
- 提示:缓存类型分为Local和Session,加密类型(SYMMETRIC_CRYPTO_TYPE)参照DataCrypto
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
get | func | 获取缓存中的数据(可指定缓存类型和加密类型) | DataStorage.get('m2', { storageType, encryptType }) |
set | func | 将数据保存到缓存中(可指定缓存类型和加密类型) | DataStorage.set('m2', { name: 'm2'}, { storageType, encryptType }) |
remove | func | 从缓存中移除指定的key(可指定缓存类型) | DataStorage.remove('m2', STORAGE_TYPE.Session) |
clear | func | 清除所有的缓存(可指定缓存类型) | DataStorage.clear(STORAGE_TYPE.Local) |
count | func | 获取缓存key的数量(可指定缓存类型) | DataStorage.count(STORAGE_TYPE.Local) |
contains | func | 判断是否包含指定key对应的缓存(可指定缓存类型) | DataStorage.contains('m2', STORAGE_TYPE.Local) |
- DataCrypto 统一提供加解密算法(对称加密和非对称加密)。
- 提示:加密类型分类对称加密(SYMMETRIC_CRYPTO_TYPE)和非对称加密(ASYMMETRIC_CRYPTO_TYPE)
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
encrypt | func | 加密指定的数据(可指定加密类型) | DataSecurity.encrypt('m2', SYMMETRIC_CRYPTO_TYPE.DES) |
decrypt | func | 解密指定的数据(可指定加密类型) | DataSecurity.decrypt('e1cf3f88a2dd46a6', SYMMETRIC_CRYPTO_TYPE.DES) |
- DataVerifyCode 基于Canvas提供图形验证码。
- 提示:首先必须生成验证码实例verifyCode,然后通过实例去调用
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
validate | func | 生成图形验证码并判断用户输入是否与之相同 | const verifyCode = new DataVerifyCode('tx_verify_code'); verifyCode.validate(this.$input.value); |
- DataUtil 工具函数。
属性/方法 | 类型 | 描述 | 示例 |
---|---|---|---|
getDictItems | func | 获取指定类型的字典项 | DataUtil.getDictItems(dict, 'user_type', { typeName, itemsName}) |
getDictValue | func | 获取指定类型字典下指定key对应的值 | DataUtil.getDictItems(dict, 'user_type', 'ut001', { typeName, itemsName, keyName, valueName, separator}) |
extend | func | 对数组/对象执行深浅拷贝 | DataUtil.extend({}, {id:1,name:'m2',repositories:'m2-core','m2-vue','m2-mfe'}, true) |
clone | func | 对数组/对象执行深浅拷贝并判断是否将结果转化为数组 | DataUtil.clone({id:1,name:'m2',repositories:'m2-core','m2-vue','m2-mfe'}, {deep:true,asArray:true}) |
randomString | func | 生成指定长度(默认: 32)的随机字符串 | DataUtil.randomString(10) |
randomNumber | func | 生成指定范围(min,max)的随机数字 | DataUtil.randomNumber(10, 50) |
randomColor | func | 生成指定范围(min,max)的随机颜色 | DataUtil.randomColor(10, 50) |
getLast12Months | func | 获取当前日期的前12个月份 | DataUtil.getLast12Months() |
getSecureText | func | 对指定的字符串做星号屏蔽处理(可指定星号个数,前后多少位开始处理) | DataUtil.getSecureText('13566668888') |
defaultVal | func | 获取对应数据项的值,如果未undefined则返回默认值 | DataUtil.defaultVal('loading', true) |
pick | func | 获取指定对象/数组指定列对应的数组或对象 | DataUtil.pick(users, 'name', 'age') |
merge | func | 合并一个解构后的对象数组和指定的对象 | DataUtil.merge({a:1},{b:2}, {c:3,d:4}) |
uncamelize | func | 将字符串按大小字母分隔并返回(大写,小写,原样) | DataUtil.uncamelize('getDataList') |
toUpperFirst | func | 将字符串首字母大写并返回 | DataUtil.toUpperFirst('m2') |
redirect | func | 跳转到指定的url对应的地址 | DataUtil.redirect('/login') |
getHashValue | func | 获取url中hash值(#到?之间的值) | DataUtil.getHashValue() |
getQueryValue | func | 获取url中指定名称的查询字符串值(QueryString) | DataUtil.getQueryValue('name', 'http://xxx.com?name=m2') |
getUrlQuery | func | 获取url字符串问号之后的值并转化为对象 | DataUtil.getUrlQuery('http://xxx.com?name=m2') |
formatMoney | func | 数字千分位格式化 | DataUtil.formatMoney(123456789.123) |
unformatMoney | func | 将千分位格式的数字字符串转换为浮点数 | DataUtil.unformatMoney('123,456,789.00') |
formatDate | func | 根据指定的格式(默认: 'yyyy-MM-dd')将被日期格式化 | DataUtil.formatDate(1536290438) |
formatDateTime | func | 根据指定的格式(默认: 'yyyy-MM-dd HH:mm:ss')将被日期时间格式化 | DataUtil.formatDateTime(1536290438) |
formatShortDateTime | func | 根据指定的格式(默认: 'yyyy-MM-dd HH:mm')将被日期时间去秒格式化 | DataUtil.formatShortDateTime(1536290438) |
formatTime | func | 根据指定的格式(默认: 'HH:mm:ss')将被时间格式化 | DataUtil.formatTime(1536290438) |
formatShortTime | func | 根据指定的格式(默认: 'HH:mm')将被时间去秒格式化 | DataUtil.formatShortTime(1536290438) |
padLeftZero | func | 字符串前导补0 | DataUtil.padLeftZero('4') |
downloadFile | func | 下载文件 | DataUtil.downloadFile(data, '文件') |
1.5.0
3 years ago
1.4.9
4 years ago
1.4.8
4 years ago
1.4.7
4 years ago
1.4.6-beta
4 years ago
1.4.6
4 years ago
1.4.5
4 years ago
1.4.4
4 years ago
1.4.3
4 years ago
1.4.2
4 years ago
1.4.1
4 years ago
1.4.0
4 years ago
1.3.0
4 years ago
1.2.9
5 years ago
1.2.8
5 years ago
1.2.7
5 years ago
1.2.6
5 years ago
1.2.5
5 years ago
1.2.4
5 years ago
1.2.3
5 years ago
1.2.2
5 years ago
1.2.1
5 years ago
1.2.0
5 years ago
1.1.9
5 years ago
1.1.8
5 years ago
1.1.7
5 years ago
1.1.6
5 years ago
1.1.5
5 years ago
1.1.4
5 years ago
1.1.3
5 years ago
1.1.2
5 years ago
1.1.1
5 years ago
1.1.0
5 years ago
1.0.3
5 years ago
1.0.2
5 years ago
1.0.1
5 years ago
1.0.0
5 years ago
2.0.0
5 years ago