npm package: @nsrd/nus
Description: nus is a javascript utils for NeuqSoft RD
Author: huangrx@neuqsoft
Latest version: 1.1.1

# [@nsrd/nus](https://www.npmjs.com/package/@nsrd/nus)

> nus is a javascript utils for NeuqSoft RD.
  
### Install

#### iife

```html
<script src="https://cdn.jsdelivr.net/npm/@nsrd/nus/dist/nus.min.js"></script>
```

`nus` will be registered as a global variable.

#### esm

```shell script
$ npm install @nsrd/nus --save
```

```javascript
import nus from "@nsrd/nus";
```

### Usage

#### date

```javascript
/**
 * 日期格式化
 * @param1 {String/Date} Date 实例 new Date() 或时间戳 new Date().getTime()，支持 ISO 8601、RFC 2822
 * @param2 {String} 期待格式，日期字符格式与 https://momentjs.com/docs/#/parsing/string-format/ 保持一致
 * @returns {String} 期待格式的日期字符串
 */

nus.date.format(new Date(), "YYYY-MM-DD HH:mm:ss [或] YYYY[年]MM[月]DD[日] HH[时]mm[分]ss[秒]");
// output = 2020-10-28 15:17:13 或 2020年10月28日 15时17分13秒

/**
 * 日期格式化
 * @param1 {String} 日期字符串
 * @param2 {String} 日期字符串的格式，日期字符格式与 https://momentjs.com/docs/#/parsing/string-format/ 保持一致
 * @param3 {String} 期待格式，日期字符格式与 https://momentjs.com/docs/#/parsing/string-format/ 保持一致
 * @returns {String} 期待格式的日期字符串
 */
nus.date.format("20201027085959", "YYYYMMDDHHmmss", "YYYY-MM-DD HH:mm:ss [或] YYYY[年]MM[月]DD[日] HH[时]mm[分]ss[秒]");
// output = 2020-10-27 08:59:59 或 2020年10月27日 08时59分59秒
```

#### device

```javascript
/**
 * 获取设备系统
 * @returns {String} 可能值如下
 *   - unknown 未知系统
 *   - windows Windows 系统
 *   - osx OSX 系统
 *   - linux Linux 系统
 *   - android Android 系统
 *   - ios iOS 系统
 */
nus.device.getDevice();
// output = windows

/**
 * 获取浏览器信息
 * @returns {Object} 可能值如下
 *   - {type:"unknown",version:"unknown"} 未知浏览器
 *   - {type:"ie",version:"11.0"} IE 浏览器与版本号，支持 IE11 及以下版本号
 *   - {type:"chrome",version:"unknown"} Chrome 浏览器，无版本号
 *   - {type:"firefox",version:"unknown"} Firefox 浏览器，无版本号
 *   - {type:"safari",version:"unknown"} Safari 浏览器，无版本号
 *   - {type:"opera",version:"unknown"} Opera 浏览器，无版本号
 *   其他国产浏览器当前未判断
 */
nus.device.getBrowser();
// output = {type: "chrome", version: "unknown"}
```

#### generator

```javascript
/**
 * 生成 uuid
 * @param1 {Boolean}
 *   - true uuid 为 32 位，无连字符 -
 *   - void/false uuid 为 36 位，其中 4 位连字符 -
 * @returns {String} uuid
 */
nus.generator.uuid(true);
// output = 53fd33f206b1415090b20477d9ec554a
nus.generator.uuid();
// output = 6d0d801d-909f-4ada-9d2f-c7f64c8372b4

/**
 * 生成 MD5
 * @param1 {String} 原始字符串
 * @param2 {Boolean}
 *   - true md5 为大写字符
 *   - void/false md5 为小写字符
 * @returns {String} 原始字符串的 MD5
 */
nus.generator.MD5("huangrx", true);
// output = DF34F01DA54CB20ED583980B91DDA7AD
nus.generator.MD5("huangrx");
// output = df34f01da54cb20ed583980b91dda7ad

/**
 * 重复字符串
 * @param1 {String} 原始字符串
 * @param2 {Number} 重复次数
 * @returns {String} 重复字符串
 */
nus.generator.repeatedString("huangrx666 ", 6);
// output = huangrx666 huangrx666 huangrx666 huangrx666 huangrx666 huangrx666 
```

#### jsbridge

```javascript
/**
 * 调用原生 APP JSBridge 方法
 * iOS 实现 https://github.com/marcuswestin/WebViewJavascriptBridge
 * Android 实现 https://github.com/lzyzsd/JsBridge
 * @param1 {String} 与 APP 约定的方法名
 * @param1 {Object} 向 APP 传递的参数
 * @returns {Promise} then 中返回 APP 回传数据，catch 中返回异常信息 can't find jsbridge!
 */
nus.jsbridge.callAPP("login", {username: "your_name", password: "your_pwd"}).then(res => {
  console.log("[jsbridge][callAPP]", res);
}).catch(err => {
  console.error("[jsbridge][callAPP]", err);
});
```

#### masker

```javascript
/**
 * 身份证号掩码
 * @param1 {String} 身份证号
 * @param2 {Number} 结尾保留几位
 * @returns {String} 掩码身份证号
 */
nus.masker.maskIDCard("110101199003079032", 4);
// output = **************9032
nus.masker.maskIDCard("110101199003079032", 8);
// output = **********03079032

/**
 * 社保卡号掩码
 * @param1 {String} 社保卡号
 * @returns {String} 掩码社保卡号
 */
nus.masker.maskSSCard("C12345678");
// output = C****5678

/**
 * 银行卡号掩码
 * @param1 {String} 银行卡号
 * @returns {String} 掩码银行卡号
 */
nus.masker.maskBankNo("998801123456789112");
// output = **** **** **** 9112

/**
 * 中文姓名掩码
 * @param1 {String} 中文姓名
 * @returns {String} 掩码中文姓名
 */
nus.masker.maskChineseName("张三");
// output = 张*
nus.masker.maskChineseName("张三丰");
// output = 张*丰
```

#### url

```javascript
/**
 * 获取 URL Query 参数对象
 * @param1 {Void/String} URL
 * @returns {Object} query 对象
 */
nus.url.getQuery();
// output = {}
nus.url.getQuery("https://www.baidu.com?a=b&c=d&d_e=f_j");
// output = {a: "b", c: "d", d_e: "f_j"}
```

#### validator

```javascript
/**
 * 是否是中文
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isChinese("我是大好人");
// output = true

/**
 * 是否是中文姓名
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isChineseName("张三丰");
// output = true
nus.validator.isChineseName("张3丰");
// output = false

/**
 * 是否是身份证号
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isIDCard("110101199003079032");
// output = true
nus.validator.isIDCard("123456789012345678");
// output = false

/**
 * 是否是手机号
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isMobileNumber("15712341234");
// output = true
nus.validator.isMobileNumber("12312341234");
// output = false

/**
 * 是否是邮编
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isPostCode("066000");
// output = true

/**
 * 是否是电子邮箱
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isEmail("huangrx@neusoft.com");
// output = true

/**
 * 是否是 URL 地址
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isURL("https://google.com");
// output = true
nus.validator.isURL("https://google.com/#/i?q=p");
// output = true

/**
 * 是否是 IP 地址
 * @param1 {String} 字符串
 * @returns {boolean}
 */
nus.validator.isIP("10.19.92.210");
// output = true
```