对原生库的拓展以及常用库的引入,一下是和拓展出来的函数以及简单介绍。
npm install gq-core --save
带彩色的头部日志打印
带包裹的日志打印
在group
基础上增加了时间的计算
如果value在min~max范围中,返回value,否则返回最接近value的值。
克隆一个对象
将obj2的属性添加到obj上
深度克隆对象。
注意,这里使用JSON.stringify和JSON.parse,所以function、NaN、Infinity等对象无法正常克隆
### Object.extend(obj) / obj.$extend
判断obj与obj2的属性结构与值是否一样
判断obj的属性结构和值中是否包含了small_obj的属性结构与值
hasOwnProperty方法的简写
数组拷贝,同arr.slice(start_index, num)
同arr.unshift, arr.push
方法
克隆出一个不包含item的数组
直接操作源数组,变成一个不包含item的数组
删除undefined null ""
这三种对象,返回一个新数组
删除重复项。仅仅适用于数组元素类型是Number、String
分页的方法切割数组
filter与map的结合,进行filter判定时,如果返回的值为真,就加入到结果数组中返回。
obj-item数组根据obj[key]来进行排序
将数组obj-item转化为obj[obj_item[key]] = obj_item
:
[{
name: "Gaubee",
age: 29
}, {
name: "Bangeel",
age: 9
}].toMap("name");
// ===>
{
"Gaubee": {
name: "Gaubee",
age: 29
},
"Bangeel": {
name: "Bangeel",
age: 9
}
}
- YYYY 年
- Q 季度
- MM 月份
- DD 日期
- hh 小时
- mm 分钟
- ss 秒
- SSS 毫秒
同JSON.parse(text, reviver)
判断字符串是否以small_str开头或者结尾
判断对象是否为字符串
驼峰化字符串:
"a-bb.cd_dd".camelize(); // aBbCcDd
下划线化字符串:
"aBbCcDd".underlize(); // a_bb_cc_dd
转数字
批量替换
将字符串转为控制台中带色彩的字符串,颜色表对照:
# String.colors.styles
reset bold dim italic underline inverse hidden strikethrough black
red green yellow blue magenta cyan white gray grey bgBlack bgRed
bgGreen bgYellow bgBlue bgMagenta bgCyan bgWhite blackBG redBG
greenBG yellowBG blueBG magentaBG cyanBG whiteBG
字符串转为正则中使用的字符串,将正则表达式的特殊字符做了转义处理。
空函数
校验函数,先执行matchFun,如果返回值是真,接着执行succFun,否则执行errFun。用于AOP校验权限时使用
判断对象是否为函数
复制目录。
- src 需要复制的目录
- dst 复制到指定的目录
递归创建目录
递归删除目录
创建不存在的文件
活取指定目录下的所有文件,包括子目录的文件
循环map、set的元素,并返回数组对象,这个方法方便和co库配合:
yield set.map(co.wrap(function*(value, index) {
yield ...
}));
通用的纯英文用户名命名校验
校验是否符合文件夹命名
身份证校验
手机、电话号码校验
银行卡校验
邮箱校验
字符串转Boolean:
"false","" ==> false
校验是否是网址
字符串转MD5,32位
二次MD5化,64位
获取一个绝对随机的字符串,带prefix前缀
根据http-userAgent
判断是否是手机
根据http-userAgent
判断是否是微信
并发运行的任务限制:
var t = Task(function(v, i) {
setTimeout(function() {
console.log(i);
t.end();
}, 1000);
}, 2);//现在最多同时运行2个任务
Array.from({
length: 10
}).forEach(t.run);
在批量下载数据、批量操作文件的时候经常使用。如果不加以限制,会导致系统级的错误
多任务执行完成后的回调:
// 注册一个10个任务的回调
w = When(10, function() {
console.log("all task run completed!");
w.then(function() {
console.log("all ok1")
});
});
w.then(function() {
console.log("all ok2")
});
// 执行10个任务,最多同时运行两个任务
var t = Task(function(v, i) {
setTimeout(function() {
console.log(i, "is ok");
w.ok(i)
t.end();
}, 200);
}, 2);
Array.from({
length: 10
}).forEach(t.run);
繁体中文转简体中文
简体中文转繁体中文
暂停ms毫秒,配合co使用
请求url网址的数据,配合co使用
简单的内存+文件数据库:
/*
* 初始化
*/
// 初始化、重置索引对象
fileDB.refreshIndex()
// 可选启用自动备份,以及应急备份
fileDB.autoBackup()
/*
* 使用方法
*/
fileDB.insert(db_name, obj, _id)
fileDB.update(db_name, _id, obj, _is_cover)
fileDB.remove(db_name, obj_index)
remove_list(db_name, obj)
remove_all(db_name)
fileDB.find_by_id(db_name, _id)
fileDB.find_one(db_name, obj)
fileDB.find_list(db_name, obj, num, page)
fileDB.find_all(db_name)
详见TCP README;