react-native-gp-utils(对react-native全局进行配置,对内置对象原型)

发布时间:2020-06-17 21:52:32 作者:geekPrince
来源:网络 阅读:934

react-native-gp-utils

对react-native全局进行配置,对内置对象原型链增加方法,增加常用全局方法.

每次新建react-native项目之后都会发现有一些很常用的方法在这个项目中也会用到,有些对全局的配置(禁用模拟器上显示黄框,release发布版本中时console打印失效等).这些如果在新项目中在搞一次的话的确是很麻烦,所以我就将其封装成了这个库.

github地址: https://github.com/geek-prince/react-native-gp-utils

npm地址: https://www.npmjs.com/package/react-native-gp-utils

{{TOC}}

安装

npm install react-native-gp-utils --save

如何使用

首先导入插件

三种侵入式等级(根据情况选择其中一种方式导入)

三种侵入式等级分别导入插件的方式

导入库->设置配置选项(可选)->自定义各个库文件名(可选,在侵入式等级1中使用)->给出侵入式等级初始化

1.导入库
import GPUtils from 'react-native-gp-utils';
2.设置配置选项(可选)
GPUtils.configs={yellowBoxOn:true}; //这里设置打开警告提示黄框
3.自定义各个库文件名(可选,在侵入式等级1中使用)
//这里表示将CommonUtils,ArrayUtils工具类的名称分别自定义为CU,AU,没给出的按默认的工具类的名称.
GPUtils.namesMap={CommonUtils:'CU',ArrayUtils:'AU'};
4.给出侵入式等级初始化
4.1.以侵入式等级0初始化
// let {CommonUtils,ArrayUtils}=GPUtils.initWtihInvadeScale(0);
// 也可以向下面这样为之自定义名称
let {CommonUtils:CU,ArrayUtils:AU}=GPUtils.initWtihInvadeScale(0);
4.2.以侵入式等级1初始化(推荐)
GPUtils.initWtihInvadeScale(1); //自定义名称在上面第3步
4.3.以侵入式等级2初始化
GPUtils.initWtihInvadeScale(2); //完全侵入,不支持自定义名称(因为每个方法名都会成为全局变量)

可配置选项(上面第2步)

|:-----------:|:-----------:|:-----------:|
|配置项|说明|默认值|
|yellowBoxOn|指定警告黄框(即在打印warn警告信息时,模拟器先放出现的警告黄框)是否开启|false:关闭(系统默认是开启)|
|releaseLogOn|指定是否在release发布版本中打印log的信息(release版本中系统默认是不会将console.log打印除去的,但是又不可能发布前特地删一次所有注释,所以直接导入库就行了,默认就会在release版本清除log打印)|false:关闭release版本中的打印|

拓展的工具类及其对应的功能

方法的四种类型,下面会有解释

三种侵入式导入调用四种类型方法的方式

四种类型的方法
四种类型的方法在三种侵入式等级下分别的调用方式

所有方法的详细介绍在下面,这里先用其中几个方法介绍一下调用方式

normal:普通方法.(以CommonUtils中的loop方法(统一管理循环,遍历的方法)为例)

//按照上面方法导入之后
CommonUtils.loop(10,(i)=>{console.log(i)}); //输出0到9
//可以自定义别名导入,这时的调用方式就位(所有方法类型都可以自定义别名,侵入式1也一样,下面就不累赘写以别名方式调用的内容了)
let {CommonUtils:CU}=GPGlobal.initWtihInvadeScale(0);
CU.loop(10,(i)=>{console.log(i)});
//和上面侵入式0调用方式一样,只是会占用对应的全局变量
loop(10,(i)=>{console.log(i)}); //直接方法名调用

baseOnInvadeScale类型.(以ArrayUtils中的unshiftFromIndex方法(将数组中指定索引的元素移动到最前面去)为例)

let arr=[1,2,3,4,5];
ArrayUtils.unshiftFromIndex(arr,1,3); //结果为[2, 1, 3, 4, 5] 将所因为3的元素移到最前面
let arr=[1,2,3,4,5];
arr.unshiftFromIndex(1,3); //因为是数组原型链上的方法,所以直接这样调用,而且相对于侵入式0的滴啊用方法,也少了第一个参数(即当前这个数组),

both类型.(以DateUtils中的getDateDiff方法(计算两个日期时间之间的差值)为例)

let startTimeStr='2017-11-11 11:11:11';
let endTimeStr='2017-11-12 10:10:10';
DateUtils.getDateDiff(startTimeStr,endTimeStr); //结果为1
//侵入式1提供两种方法,一种是普通方法,调用方式就和上面的侵入式0的调用方式一样;一种是原型链上的方法(向下面这样调用)
let startTimeStr='2017-11-11 11:11:11';
let date=DateUtils.getDateObj(startTimeStr); //这个方法用于通过字符串,时间戳获得一个日期对象,date此时就为日期对象,详情看下面的介绍.
let endTimeStr='2017-11-12 10:10:10';
date.diff(endTimeStr); //直接通过这种原型链方法的形式调用,为了简便,在原型链中的方法为diff,both类型方法具体普通方法与原型链方法一不一致,看具体方法中的说明.
//普通方法和侵入式2在normal:普通方法的调用相同
//原型链方法和上面侵入式1的调用方式相同

onlyProto类型.(以NumberUtils中的toFloatStr方法为例)

let num=18.12345;
num.toFloatStr() //结果为"18.12"

各个工具类中的方法

为了方便,下面没有特别说明都以侵入式等级2为例讲解,比较简单的方法就不给出示例了

CommonUtils:一些全局都可能用到的常用方法(里面全部为normal:普通方法)

toStr(obj)

toStr({})
// 返回"[object Object]"

判断当前数据的类型的一些列方法:

isNumber(obj)

isString(obj)

isBool(obj)

isArray(obj)

isObj(obj)

isDate(obj)

isRegExp(obj)

getNewObj(obj)

let arr=[1,2,3,4,5];
let copyArr=getNewObj(arr);
copyArr===arr
// 返回false,得到一个至完全相同单地址不同的数组

loop(obj,callBack)

//对指定范围进行循环
loop(10,(i)=>{console.log(i)}) //输出0到9
//对数组进行循环
let arr=[1,2,3,4,5,6,7];
loop(arr,(i,k)=>{console.log(i,k)});//输出数组中的每一个索引与其对应的值
//对对象进行循环
let obj={a:10,b:20,c:30};
loop(obj,(k,v)=>{console.log(k,v)})//输出对象中的每一个键值对

//loop的回调函数中break,continue不可用,但是可以用return做出break,continue,return的操作
//break操作(比如,到5时退出,这时只需要return 1(这里的1可以用任何一个无意义的,不是undefined的值就行)即可)
loop(10,(i)=>{
  if(i===5){return 1}
  console.log(i);// 打印出0到4
});
//continue操作(比如,到5时跳过此次循环,进行下一次循环,只需要return undefined即可)
loop(10,(i)=>{
  if(i===5){return undefined}
  console.log(i);// 打印出0-4,6-9
});
//return操作(比如返回i值,像正常return一样返回即可,该返回值则为loop方法的返回值,可以拿到返回值后做其他操作,也可以再继续将该返回值再次return出去)
let result=loop(10,(i)=>{
  if(i===5){return i}
  console.log(i);// 打印0到4
});
console.log(result);//打印5
//可以继续return出去,这样就和正常for循环时的return一样了
function test() {
  return loop(10,(i)=>{
    if(i===5){return i}
    console.log(i);// 打印0到4
  });
}
let result=test();
console.log(result);//打印5

getBool(obj)

getFuncName(args)

function Test() {
    console.log(getFuncName(arguments));
}
// 打印出Test

isNumeric(strNum,maxDecimalNum=null,ifTrim=true,positive=false)

isNumeric('123.6765')// 结果true
isNumeric('123.6765',2)// 结果false
isNumeric(' -234.67 ',2,)// 结果true
isNumeric(' -546.12 ',2,false)// 结果false
isNumeric(' -123.67 ',2,true,true);// 结果false
isNumeric(123.67,2,true,true);// 结果true

numToFixedLenStr(num,len=2,char='0')

numToFixedLenStr('8') //结果为"08"
numToFixedLenStr('18',4) //结果为"0018"
numToFixedLenStr('18',4,'*') //结果为"**18"
numToFixedLenStr(18,4,'*') //可以是数字

MathUtils:一些和计算相关的方法(里面全部为normal:普通方法)

js精确的加减乘除(js对浮点数的运算会存在问题,无论加减乘除,所以加入这些方法).
这些方法在NumberUtils和MathUtils中都被加入到Number对象和String对象的原型链中了,名称分别为add,sub,mul,div,详情看相应的方法说明.
方法中除了可以传数字,也可以传字符串类型的数字

accAdd(arg1,arg2)

12.4249+6.8 //结果为19.224899999999998
accAdd(12.4249,6.8) //结果为19.2248
accAdd('12.4249','6.8') //传入参数也可以是字符串类型的数字,结果同上

accSub(arg1,arg2)

10.3-9.2 //结果为1.1000000000000014
accSub(10.3,9.2) //结果为1.1

accMul(arg1,arg2)

0.7*8.1 //结果为5.669999999999999
accMul(0.7,8.1) //结果为5.67

accDiv(arg1,arg2)

5.67/8.1 //结果为0.7000000000000001
accDiv(5.67,8.1) //结果为0.7

dealWithFloatStr=(strNum,toFixed=2,type='round',inputType='both',returnType=true)

dealWithFloatStr('12.3456') //结果为"12.35"
dealWithFloatStr('12.3456',1) //结果为"12.3"
dealWithFloatStr('12.3456',1,'up') //结果为"12.4"
dealWithFloatStr('12.3456',3,'sub') //结果为"12.345"
dealWithFloatStr('12.3456',3,'sub','num') //结果为"12.3456"
dealWithFloatStr(12.3456,3,'sub','num',false) //结果为12.345

RNUtils:对react-native组件api的简单封装,常用值的导出,适配问题的一些处理(里面全部为normal:普通方法,与普通属性)

一些常用属性:

w

h

isios

一些常用api的简单封装:

openUrl(url)

openPhone(phoneNum)

setClipboard(test)

get(url,args={})

get('http://baike.baidu.com/api/openapi/BaikeLemmaCardApi?scope=103&format=json&appid=379020&bk_key=%E9%93%B6%E9%AD%82&bk_length=600',)
    .then((jsonData)=>{
        console.log(jsonData);
    })
    .catch((error)=>{
        console.log(error);
    });

post(url,bodyData,headers={})

//以'Content-Type': 'application/json'方式发送请求时
post('http://baike.baidu.com/api/openapi/BaikeLemmaCardApi',
    {scope:103,format:'json',appid:379020,bk_key:'银魂',bk_length:600})
    .then((jsonData)=>{
        console.log(jsonData);
    })
    .catch((error)=>{
        console.log(error);
    });
//以'Content-Type': 'application/x-www-form-urlencoded'方式发送请求时,需要给出第三个参数headers
post('http://baike.baidu.com/api/openapi/BaikeLemmaCardApi',
    'scope=103&format=json&appid=379020&bk_key=银魂&bk_length=600',
    {'Content-Type': 'application/x-www-form-urlencoded'})
    .then((jsonData)=>{
        console.log(jsonData);
    })
    .catch((error)=>{
        console.log(error);
    });

一些适配相关的方法:

setFontSize(fontSize)

RegExpUtils:一些和正则相关的方法(里面全部为normal:普通方法)

isPhoneNum(str)

isEmail(str)

pushRegExpKeyToArr(obj,reg)

let arr=['ro123ot','root','fdhfi','raew'];
pushRegExpKeyToArr(arr,/ro.*ot/);
// 返回["ro123ot", "root"]
// 如果传入参数为对象,则返回的数组中的元素是传入对象键(key)中符合正则的的

RandomUtils:一些和随机相关的方法(里面全部为normal:普通方法)

getRandom(num1,num2)

getRandomNumStr(num1,num2)

getRandomFromArr(arr)

getRandomFromArrWithWeight(arr,weightArr)

let arr=['第一个数','第二个数','第三个数','第四个数'];
let weightArr=[1,2,3,4];
//loop是该库中的一个方法用于统一管理循环的方法(上面有讲解)
loop(10,()=>{
  let random=getRandomFromArrWithWeight(arr,weightArr);
  console.log(random); //这样'第一个数','第二个数','第三个数','第四个数'输出的概率就分别是十分之一,十分之二,十分之三,十分之四
});

getRandomStr(num=4,type='all',ifEq=true)

getRandomStr(16,'all',true)
// 结果 "7a314W55nupLV8P4" (16位的既有数字又有字母的随机数,且数字和字母出现概率相同)

getRandomPhone()

内建对象的工具类部分:

ArrayUtils:对内建对象Array拓展的相关(里面的方法全部为baseOnInvadeScale,因为关联数组不常用,所以这里面的所有方法都是针对索引数组的)

contains(value,allEqual=true)

deleteValue(value,allEqual=true,deleteAll=true)

let arr=[1,2,3,4,5,2,3,6,1,3,2];
arr.deleteValue(3); //结果 [1, 2, 4, 5, 2, 6, 1, 2] ,将多有3的元素都删除了
arr.deleteValue(2,true,false) //结果 [1, 4, 5, 2, 6, 1, 2] ,只删除了第一个2的元素
arr.deleteValue(2).push(100); //可以对其进行链式操作

spliceOne(index)

sum()

let arr=[1,2,3,4,5,2,3,6,1,3,2,'12','6',1.1,'6.8']
arr.sum() //结果为57.9

移动数组元素的几个方法:

unshiftFromIndex(index)

let arr=['现在最新的内容','现在第二新的内容','现在正准备点击之后变成最新的内容','现在最后的内容'];
arr.unshiftFromIndex(2) 
//结果为["现在正准备点击之后变成最新的内容", "现在最新的内容", "现在第二新的内容", "现在最后的内容"]
arr.unshiftFromIndex(2).unshiftFromIndex(3) //可以对其进行链式操作

pushFromIndex(index)

let arr=[0,1,2,3,4,5];
arr.pushFromIndex(2); //结果为[0, 1, 3, 4, 5, 2]

moveToIndexFromIndex(fromIndex,toIndex)

let arr=[0,1,2,3,4,5];
arr.moveToIndexFromIndex(1,3) //结果为[0, 2, 3, 1, 4, 5]

deepCopy()

let arr=[0,1,2,3,4,5];
let arr1=arr.deepCopy(); //arr1与arr内容完全相同
arr1===arr //返回false,不是同一个对象

eachToFloat(args)

//下面的结果都是JSON.stringify()后的输出
let arr=[10,123,'123',[832.123,'1234.123','dsadf12'],{a:10.123,b:'123.86',c:'123dsa'}];
let finalArr=arr.eachToFloat({ifChangeArr:false}); 
//上面arr结果没变,finalArr结果为"[10,123,"123.00",[832.12,"1234.12","dsadf12"],{"a":10.12,"b":"123.86","c":"123dsa"}]"
finalArr=arr.eachToFloat({ifChangeArr:false,ifRecursion:false}); 
//上面finalArr的结果为"[10,123,"123.00",[832.123,"1234.123","dsadf12"],{"a":10.123,"b":"123.86","c":"123dsa"}]"其中的对象和数组就没有参与处理
finalArr=arr.eachToFloat({ifChangeArr:false,toFixed:1,type:'up',outputType:'str');
//上面finalArr的结果为"["10.0","123.0","123.0",["832.2","1234.2","dsadf12"],{"a":"10.2","b":"123.9","c":"123dsa"}]"
arr.eachToFloat({toFixed:3,type:'sub',inputType:'str'});
//上面这样就会直接改变数组中相应的值,这样就不用外界用变量接收了.arr的结果为"[10,123,"123.000",[832.123,"1234.123","dsadf12"],{"a":10.123,"b":"123.860","c":"123dsa"}]"

DateUtils:对内建对象Date拓展的相关(里面方法有普通方法,也有both类型,具体类型,看下面各个方法的方法介绍中)

getDateObj(date)

getDateObj('2012-12-12 00:00:00'); //结果成功生成对象Wed Dec 12 2012 00:00:00 GMT+0800 (CST)
getDateObj(1455241600000); //可以是时间戳的Int

formatDate(date,formatStr='yyyy-MM-dd hh:mm:ss')

formatDate('2012-12-12') //结果为"2012-12-12 00:00:00"
formatDate('2012-12-12 12:12:12','yyyy/MM/dd hh:mm') //结果为"2012/12/12 12:12"
formatDate(1455241600000,'yyyy/MM/dd hh:mm') //可以是Int类型的时间戳,结果为"2016/02/12 09:46"
let date=new Date();
formatDate(date,'yyyy/MM/dd hh:mm') //可以是日期对象
date.format('yyyy/MM/dd hh:mm') //因为是both类型的方法,所以可以通过这种形式来调用

addOrSubDate(date,num,dayOrMouth='day',addOrSub='add',ifChangeDate=true,isBehindZero=false)

let dateStr='2012-12-12 12:12:12';
addOrSubDate(dateStr,1); //结果为Thu Dec 13 2012 12:12:12 GMT+0800 (CST)
addOrSubDate(dateStr,1,'month','sub'); //结果为Mon Nov 12 2012 12:12:12 GMT+0800 (CST)
let timestamp=1455241600000;
addOrSubDate(timestamp,2,'hour','sub') //也可以是Int类型的时间戳,结果为Fri Feb 12 2016 07:46:40 GMT+0800 (CST)
let date=new Date();
addOrSubDate(date,2,'hour','sub') //也可以是date对象,结果中改变了原来的date对象
addOrSubDate(date,2,'day','sub',false,true) //这样就不改变原来的日期对象了.结果为Sat Oct 20 2018 00:00:00 GMT+0800 (CST)
date.addOrSubDate(2,'day','sub',false,true) //因为是both类型的方法,所以可以通过这种形式来调用

addOrSubDateFormat(num,formatStr='yyyy-MM-dd',date='',dayOrMouth='day',addOrSub='add',isBehindZero=false)

addOrSubDateFormat('2012-12-12 12:12:12',1); //结果为"2012-12-13"
let date=new Date();
date.addOrSubDateFormat(3); ////因为是both类型的方法,所以可以通过这种形式来调用

getDateDiff(startTime, endTime, diffType='day',ifAbs=true)

let startTimeStr='2017-11-11 11:11:11';
let endTimeStr='2017-11-12 10:10:10';
getDateDiff(startTimeStr,endTimeStr); //结果为1
getDateDiff(startTimeStr,endTimeStr,'hour'); //结果为23
let date=new Date();
date.diff(endTimeStr,'month',false); //因为是both方法,所以也可以以这种方式调用.结果为-11

NumberUtils:对内建对象Number拓展的相关方法(里面的方法全部为onlyProto)

add()

sub()

mul()

div()

let num=5.67;
num.div(7) 

toFixedLenStr(len=2,char='0')

let num=18;
num.toFixedLenStr(4,'*') //结果为"**18"

toFloatStr(toFixed=2,type='round')

let num=18.12345;
num.toFloatStr() //结果为"18.12"
num.toFloatStr(3,'up') //结果为"18.124"

toFloat(toFixed=null,type='round')

let num=18.12345;
num.toFloat(3,'up') //结果为18.124 

toDate()

let num=1455241600000;
num.toDate() //结果转化为日期对象 Fri Feb 12 2016 09:46:40 GMT+0800 (CST)

ObjectUtils:对内建对象Object拓展的相关方法(本来在Object的原型链上加方法会使调用很简便,但是这样的做法被rn拒绝了,所以这里面的方法都是normal:普通方法)

objEachToFloat(obj,args={})

//下面的结果是JSON.stringify()后的输出
let obj={a:10.12341,b:{a:'10.12412',b:true,c:[10,23.0123,'dsad']},c:'40.1'};
objEachToFloat(obj,{toFixed:3,type:'up'}) //结果为"{"a":10.124,"b":{"a":"10.125","b":true,"c":[10,23.013,"dsad"]},"c":"40.100"}"

getSubObj(obj, subObjDatas,empty=null)

let obj={class:{otherProple:{name:'zhangsan'}}};
obj.class.people.name //这样直接调用就会报错
getSubObj(obj,'class.people.name') //用该方法就返回null(也可以自定义不存在时的返回值)
let a='class',b='people',c='name'; //模拟键名会根据情况改变时
getSubObj(obj,[a,b,c]); //也可以用这种方式调用

gqlObjToString(obj,ifNull=false,num=0)

let obj={a:10.12341,b:{a:'10.12412',b:true,c:[10,23.0123,'dsad']},c:'40.1',d:null,e:undefined,f:'*CONST*'};
gqlObjToString(obj);
//结果为
/*
"{
    a:10.12341
    b:{
        a:"10.12412"
        b:true
        c:[
            10
            23.0123
            "dsad"
        ]
    }
    c:"40.1"
    f:CONST
}"
*/

subObjDataToObj(obj,dealWithSameSubKey='both',separator='_',allNameKeyArr=null,supKeyArr=[],sameKeyArr=null)

let obj1={a:{test:123},b:{c:{test:456}},d:{c:{test:789}},e:{f:{test:135}}};
subObjDataToObj(obj1) //结果为 {a_test: 123, b_c_test: 456, d_c_test: 789, e_f_test: 135}

StringUtils:对内建对象String拓展的相关方法(里面方法有baseOnInvadeScale类型,也有onlyProto类型,也有both类型,具体类型,看下面各个方法的方法介绍中)

注意字符串是不能改变的,所以下面的方法如果是和改变字符串相关的都是生成的另一个新的字符串,要用另一个变量来接,元字符串不会发生改变

add()

sub()

mul()

div()

'5.67'.div(7)

toFixedLenStr(len=2,char='0')

let numStr='18';
numStr.toFixedLenStr(4,'*') //结果为"**18"

isNumeric()

toFloatStr(toFixed=2,type='round')

"18.12345".toFloatStr() //结果为"18.12"
"18.12345".toFloatStr(3,'up') //结果为"18.124"

toFloat(toFixed=null,type='round')

"18.12345".toFloat(3,'up') //结果为18.124 

toDate()

'2012-12-12 00:00:00'.toDate() //结果转化为日期对象 Wed Dec 12 2012 00:00:00 GMT+0800 (CST)

getSecStr(leftNum=0,rightNum=0,middleNum=0,secChar='*')

let str='1383838438';
str.getSecStr(2,3); //结果为"13****438"
str.getSecStr(2,3,8); //结果为"13*******438"
getSecStr(str,2,3,8); //结果同上,也可以以普通方法调用

insertSpace(numStr,spacePositions=4,loop=true)

//下面的信息都是乱写的
let bankCard='6212262201023557228';
bankCard.insertSpace(); //结果为"6212 2622 0102 3557 228",这是用于银行卡号的情况.
let IDNum='123456199507281234';
IDNum.insertSpace([6,8,4]); //结果为"123456 19950728 1234",这是用于×××时的情况.
let phone='13383838438'; //结果为"133 8383 8438",这是用于手机号时的情况.
let random='213649213892749217392147236294';
random.insertSpace([2,4,3]) //结果为"21 3649 213 89 2749 217 39 2147 236 29 4",默认会循环
random.insertSpace([2,4,3],false); //结果为"21 3649 213 892749217392147236294",不循环时
insertSpace(random,[2,4,3],false) //因为是both类型的方法,所以也可以通过普通方法的形式调用

indexdWithNum(char,n)

let str='root123rootdsahkroot123';
str.indexdWithNum('root'); //结果为0
str.indexdWithNum('root',3); //结果为16

insertToIndex(inserts,indexs)

let str='I you';
str.insertToIndex(' love',1); //结果为"I love you"
str='I you,I you';
str.insertToIndex(' love',[1,7]) //结果为"I love you,I love you"
str.insertToIndex([' love',' hate'],[1,7]) //结果为"I love you,I hate you"

getStrCount(strOrReg)

let str='root123rootdsro132otahkroot123';
str.getStrCount('root'); //结果为3
str.getStrCount(/ro.*?ot/g) //结果为4,注意,得加上修饰符g,不然会返回1

trimFunc(char=' ',type='lr')

let str='   I   love  you  ';
str.trimFunc(); //结果为"I   love  you"
str.trimFunc('all') ;//结果为"Iloveyou"
str='---I--Love--you---';
str.trimFunc('l','-') //结果为"I--Love--you---"
trimFunc(str,'l','-') //因为是both类型,也可以以普通方法的形式调用

toUpperFirst(ifOtherLower = true)

let str='I lovE yoU';
str.toUpperFirst(); //结果为"I Love You"
str.toUpperFirst(false); //结果为"I LovE YoU"

其他方面的工具类部分:

FileUtils:一些和文件相关的方法(里面的方法都是normal:普通方法)

formatFileSize(size)

formatFileSize(1236821); //结果为"1.18MB"
formatFileSize(1236821213); //结果为"1.15GB"

getBaseName(path)

getBaseName('somedir/to/test.js') //结果为"test.js"

getDirName(path)

getDirName('somedir/to/test.js') //"somedir/to"

getFileType(filePath,haveDot=false)

getFileType('somedir/to/test.js') //结果为"js"

pathJoin(dirPath,fileName)

pathJoin('somedir/to','test.js'); //结果为"somedir/to/test.js"

DebugUtils:一些在开发或调试中要到的方法(里面的方法都是normal:普通方法)

logFuncName(args)

function Test() {
    logFuncName(arguments);
}
打印出***********************************Test***********************************
function Test() {
    logFuncName(arguments,'App','-',20);
}
打印出--------------------App--------------------Test--------------------

getLorem(wordCount=30)

getLorem() //结果为"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Nkiuaoxuidbej hdkgnsmf nztqmp ngxsuxmxryubb kkuuegcnj npwtikvax jeitrhdtm, hjmmflmcqf qwhynmxw. Wpt ddoqkvpeaa dymecfpet, mqwhgngubpzbu. Asmthth jlsef fkznuhorv uwexlhzx owpyryoxxww eugqf cdefdkeatlii, ppcfamku. Gqpslqmmyg?"
getLorem(15) //指定单词数目为15.结果为"Lorem ipsum dolor sit amet, consectetur adipisicing elit. Sckyejb hdrko, zqkiuuudb iwuvzwpqll, ycvceyrlgadw yuzwcqjezdsq qnxho,."

getDataFromNetTest(pageLen=20,page=1,ms=3000,max=100)

getDataFromNetTest()
    .then((res)=>{console.log(res)}); 
    //这里结果为3秒钟后打印出一个长度20的数组,数组中每条元素就是一个对象,该对象里面
    //{index:当前数据的索引(即对几条数据),name:一个随机生成的名字,age:随机年龄,phone:随机电话号码,text:随机的一串文字(上面的getLorem方法)}.
    //这里的对象格式现在是固定的,后面可能会将其改为可以从参数中传递来.

终于整理完了

整理了好几整天终于整理完了,现在方法还比较少,不过还是算都比较常用的.

(↓ˉ▽ˉ↓)

如果大家觉得我的组件好用的话,帮到你的话,欢迎大家Star,Fork,如果有什么问题的话也可以在github中想我提出,谢谢大家的支持.

推荐阅读:
  1. 如何实现react-native自动打包的功能
  2. react-native滑动吸顶效果的实现过程

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

react-native rn js库

上一篇:在Linux上无人值守安装SQL Server 2017

下一篇:查看TCP进程各状态连接数 IP封掉 的两个脚本

相关阅读

您好,登录后才能下订单哦!

密码登录
登录注册
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》