@hasaki-ui/hsk-lulu v1.0.7
hsk-lulu
作者:joyer,邮箱:972325584@qq.com,最后修改时间:2017年10月11日星期三
作者是个菜逼,有什么错误,欢迎指正。
nodejs工具库.
使用
依赖:
npm i @hasaki-ui/hsk-lulu
npm i --save @hasaki-ui/hsk-lulu
直接使用:
const Utl = require('@hasaki-ui/hsk-lulu');
Utl.wrapArray("1");
使用某个模块
const ArrayUtl = require('@hasaki-ui/hsk-lulu/src/array');
ArrayUtl.wrapArray("1");
API
ArrayUtl
数组工具。
wrapArray(value)
将值包装成一个数组,如果这个值原先就是数组的话,会原值返回。
paddingLeftLastValue(array,length)
往数组左边填数组的最后一个值值.
不会创建新的数组.
AsyncUtl
异步操作工具。
flatPromise()
创建一个扁平的promise.
如:
const {promise,resolve,reject} = AsyncUtl.flatPromise();
// 成功
resolve();
// 或者失败
// reject();
return promise();
这样可以减少
return new Promise((res,rej) => {
// 成功
res();
// 或者失败
// rej();
})
这样的代码深度。
syncExecMultiplePromiseFunction(functionList)
同步执行多个异步的函数.
functionList:返回promise的函数.
跟Promise.All()
的区别:
Promise.All()
也是执行多个异步函数,但是Promise.all()
是无序执行,syncExecMultiplePromiseFunction
是按数组顺序依此执行。并且Promise.All
的参数为一个promise对象数组,而syncExecMultiplePromiseFunction
需要传递一个返回promise对象的函数数组。
FileUtl
文件操作相关工具
rmrf(path)
删除一个带子文件或者子文件夹的文件件,相当于执行linux命令rm -rf path
path: 需要删除的目录的路径。
rmrfSync(path)
同步的rmrf
mkdirp(path)
递归创建目录,如果目录存在,什么事情都不做,相当于执行linux命令mkdir -p path
.
path: 需要创建的目录的路径。
mkdirpSync(path)
同步的mkdirp
LangUtl
常用工具函数。
withCatch(fn,errCb)
将一个函数环绕catch执行
fn:需要执行的函数
errCb:出现异常时的回调函数,默认值为
(err) => {
throw err;
}
finallyCb:finally的回调函数,默认值为_.noop
strategy(factory,name,dft,isTrow)
简单的策略模式
利用map来降低if,else的使用,避免代码结构层次过多。
factory:工厂,主要存储了每个策略下执行的逻辑.为一个map,key为策略名字,value为逻辑; name:策略名; dft:默认逻辑。当工厂没有匹配这个策略的逻辑时,执行; isTrow:当工厂没有匹配这个策略的逻辑和默认函数时,是否抛出异常;
PathUtl
关于path(路径)的工具
WORKSPACE
当前工作目录的常量
projectPath(path ,dftPath)
根据指定的路径获取这个路径所在npm项目的绝对路径。如果给定的路径不再npm项目中,则返回dftPath
值
判断是否为npm项目是根据package.json
path:操作目录
dftPath:默认目录,默认值为path
的值
resolve(path)
将根据工作目录的相对路径转为绝对路径
可以通过设置process[PathUtl.WORKSPACE]
设置工作目录,默认值为执行命令所在的npm项目的根目录
path:相对于当前项目路径的相对路径。不一定需要存在。
ProcessUtl
关于进程的工具
exec(commond,options)
exec的promise版本
execScript(script, options)
执行暂时js脚本
会暂时生成脚本文件在当前项目根目录下,然后执行
采用exec执行脚本
返回promise
测试
进入项目目录后,执行:
npm run test
就可以执行所有的测试案例。
也可以通过查看/test
目录下的测试案例了解每个API的使用案例。