
## Installation (安装)

```console
npm install meansjs
```

> 也可下载/dist/meansjs.min.js中的文件使用

## TS 项目 引入文件

+ 在项目中找到后缀 **.d.ts** 的文件(vue3中是shims-vue.d.ts)；如果没有就自行创建
+ 将 declare module 'meansjs'; 引入其中即可


**示列**
```javascript
// ./src/shims-vue.d.ts
declare module '*.vue' {
  import type { DefineComponent } from 'vue'
  const component: DefineComponent<{}, {}, any>
  export default componen
}
declare module 'meansjs'; // 示列
```


## API (方法)

日常开发中所需要的方法

引入插件库
```javascript
import meansJs from 'meansjs';
```

|  1        | means(方法) :wrench:                  |  功能 :dragon_face:  |          |    means(方法) :wrench:   |  功能 :dragon_face:             |
|:---       | :---                                  |  :---               |   :---    | :---                     |    :---                         |
|  2        | [meAscii](#meAscii)                   |  ASCII排序          |    16     |     [meDate](#meDate)    |       年月日                     |
|  3        | [meSort](#meSort)                     |    排序             |    17     |     [meTime](#meTime)    |     年月日时分秒                 |
|  4        | [meSortSize](#meSortSize)             |  字符长度排序        |    18    |      [meUnix](#meUnix)   |      时间戳                      |
|  5        | [meCharacterSize](#meCharacterSize)   |   字符长度           |    19    |     [meJstype](#meJstype) |    判断数据类型                  |
|  6        | [meDeepClone](#meDeepClone)           |  深拷贝             |           |                           |                                 |
|  7        | [meAntiShake](#meAntiShake)           |  防抖               |           |                           |                                 |
|  8        | [meThrottle](#meThrottle)             |  节流               |           |                           |                                 |
|  9        | [meDeWeight](#meDeWeight)             |  数组去重           |           |                           |                                 |
|  10       | [meGetUrl](#meGetUrl)                 |  获取url的值        |           |                           |                                 |
|  11       | [meTerminal](#meTerminal)             |  终端判断           |           |                           |                                 |
|  12       | [meToBase64](#meToBase64)             |  图片链接转为base64 |           |                           |                                 |
|  13       | [meBase64File](#meBase64File)         |  base64转为file文件 |           |                           |                                 |
|  14       | [meMin](#meMin)                       |  获取最小值          |          |                           |                                 |
|  15       | [meMax](#meMax)                       |  获取最大值          |          |                           |                                 |

### meAscii

* meAscii方法必须传递一个对象;

**示列**
```javascript
const params = {
  name:'means',
  id:1
};
const meAscii = meansJs.meAscii(params); // id1namemeans
```

### meSort

* 第一个值 arr： 排序数组
* 第二个值 type： asc 升序 ; desc 降序 --- 非必填
* 第三个值 key： 排序字段 --- 非必填

**示列**
```javascript
const arr = [
  {id:56},{id:98},{id:65}
];
const size = meansJs.meSort(arr,type:'asc',key:'id');
```

### meSortSize

**示列**
```javascript
const arr = ['meansjs','js-yyds','我最厉害','zh']
const size = meansJs.meSortSize(arr); // ['zh', 'meansjs', 'js-yyds', '我最厉害']
```

### meCharacterSize

**示列**
```javascript
const size = means.meCharacterSize('meansjs还不错'); // 13
```

### meDeepClone

* 对象或者数组都可以进行深拷贝

**示列**
```javascript
let arr = [{id:1,name:'我不是meansjs'}]
let deep = meansJs.meDeepClone(arr);
deep[0].name = '你不是meansjs,那你是个啥?'
console.log(deep); // name : "你不是meansjs,那你是个啥?"
console.log(arr); // name : "我不是meansjs"
```

### meAntiShake

* **第一个值** : 函数 
* **第二个值** : 时间 --- 默认值 500

**示列**
```javascript
meansJs.meAntiShake(()=>{
  console.log('我是meansjs');
},500) // or

meansJs.meAntiShake(()=>{
  test() // 方法
},500)
```

### meThrottle

* **第一个值** : 函数 
* **第二个值** : 时间 --- 默认值 500

**示列**
```javascript
meansJs.meThrottle(()=>{
  console.log('我是meansjs');
},500) // or

meansJs.meThrottle(()=>{
  test() // 方法
},500)

```

### meDeWeight

* arr： 数组
* key： 去重字段, 默认为空(一维数组)

**示列**
```javascript
let arr = [{id:10},{id:10},{id:2},{id:3},{id:2}];
// let arr = [1,2,1,2,3];
const meDeWeight = meansJs.meDeWeight(arr,'id');
```

### meGetUrl

* 默认值-空（获取当前页面url）；非空时：获取传递链接url的值
* 返回对象

**示列**
```javascript
meansJs.meGetUrl("http://localhost:8080/#/about?id=12&name='wode'&dsj='dsajk'") // or
meansJs.meGetUrl() // 获取当前页面url的值
```

### meTerminal

**示列**
```javascript
meansJs.meTerminal() // or
meansJs.meTerminal()['weixin']
```

**返回参数**
```javascript
ali: false
android: false
gecko: true
iPad: false
iPhone: false
ios: false
mobile: false
presto: false
trident: false
webApp: true
webKit: false
weixin: false
```

### meToBase64

* 第一个值：图片链接
* 第二个值：回调函数
* 第三个值：图片质量 --- 默认值 0.92
* 第四个值：图片格式 --- 默认值 webp（可以不填，但是不能填空字符串）

**示列**
```javascript
meansJs.meToBase64('https://img0.baidu.com/it/u=2692044174,3628684553&fm=253&fmt=auto&app=138&f=JPEG?w=450&h=780',(base64)=>{
  console.log(base64);
  this.base64 = base64;
},0.82,'png',)
```

### meBase64File

* 第一个值：base64
* 第二个值：文件名字 --- 默认值 时间戳

**示列**
```javascript
meansJs.meToBase64('https://img0.baidu.com/it/u=2692044174,3628684553&fm=253&fmt=auto&app=138&f=JPEG?w=450&h=780',(base64)=>{
  const file = meansJs.meBase64File(base64,'meansjs');
  console.log(file);
},0.82,'png',)
```

### meMin

* 第一个值：数组
* 第二个值：key值--最小值字段

**示列**
```javascript
const arr = [
  {id:12},{id:45},{id:6}
];
const size = meansJs.meMin(arr,'id'); // 6 or
const arr = [12,45,2,34,5,3];
const size = meansJs.meMin(arr); // 2
```

### meMax

* 第一个值：数组
* 第二个值：key值--最小值字段

**示列**
```javascript
const arr = [
  {id:12},{id:45},{id:6}
];
const size = meansJs.meMax(arr,'id'); // 45 or
const arr = [12,45,2,34,5,3];
const size = meansJs.meMax(arr); // 45
```


### meDate

**示列**
```javascript
const date = meansJs.meDate();
console.log(date); // 2023-01-06
```

### meTime

**示列**
```javascript
const time = meansJs.meTime();
console.log(time); // 2023-01-06 16:16:58
```

### meUnix

**示列**
```javascript
const unix = meansJs.meUnix();
console.log(unix); // 1672993084067
```

### meJstype

* 第一个值：被判断数据
* 第二个值：是否首字母大写 -- 默认值 false

**示列**
```javascript
// let b = '123'; // String
// let b =  12; // Number
// let b = true; // Boolean
// let b = {id:'sda',name:'dsa'}; // Object
// let b = [{id:1},{id:2}]; // Array
// let b = null; // Null
let b = undefined; // Undefined
// let b = function() {}; // Function
// let b = new Date(); // Date
// let b = Symbol(1); // Symbol
const type = meansJs.meJstype(b,true);
console.log(type); // 
```