= API
== Tools
工具类, 使用方法:

[source,javaScript]
----
import { Tools } from 'platform-core';

Tools.xxx(y1,y2);
----

|===
| 方法名                                                             | 说明
| stringEquals(obj1: any, obj2: any) : boolean                      | 判断两个字符串是否相同
| isUndefined(obj: any) : boolean                                   | 判断一个对象是否为 undefined
| isUndefinedOrNull(obj: any) : boolean                             | 判断一个对象是否为 null 或者 undefined
| isEmpty(obj: any) : boolean                                       | 判断一个对象是否为 null 或者 undefined 或者空字符串
| isString(obj: any) : boolean                                      | 判断一个对象是否是字符串
| isNumber(obj: any) : boolean                                      | 判断一个对象是否是数字
| isObject(obj: any) : boolean                                      | 判断一个对象是否是对象类型
| isArray(obj: any)  : boolean                                      | 判断一个对象是否是数组
| isCurrentDay(date: Date) : boolean                                | 判断给定的日期是否是当前日期
| isBetweenTwoDates(min: Date, max: Date, date: Date): boolean      | 判断一个日期是否在两个日期之间
| isWeekend(date: Date): boolean                                    | 判断一个日期是否在周末
| isInAYear(date: Date, year: number): boolean                      | 判断一个日期是否在某年内
| toAMPMFormat(h: number): string                                   | 将 24 小时转换为 am. 或 pm. 格式
| capitalize([first, ...rest]: any): string                         | 将句子的第一个字母大写
| lowercaseFirst([first, ...rest]: any): string                     | 将句子的第一个字母小写
| letterToEmoji(c: string): string                                  | 将英文字母转成对应的 emoji 形式
| isPalindrome(str: string): boolean                                | 判断一个字符串是不是回文
| getFactorial(n: number): number                                   | 计算一个数的阶乘
| getFibonacci(n: number, memo: number[]): number                   | 计算一个斐波那契数列第 N 项
| copyToArray(arr: any[]): any[]                                    | 复制数组
| getUnique(arr: any[]): any[]                                      | 数组去重
| shuffle(arr: number[]): number[]                                  | 生成随机数字数组
| reverseString(str: string): string                                | 反转字符串
| containSameValues(arr1: any[], arr2: any[]): boolean              | 检查两个数组是否包含相同的值
| toFahrenheit(celsius: number): number                             | 温度转换(摄氏度->华氏度)
| toCelsius(fahrenheit: number): number                             | 温度转换(华氏度->摄氏度)
| clearAllCookies(): void                                           | 清除浏览器中的所有 cookie
| isAsyncFunction(f: any): boolean                                  | 检查函数是否为异步函数
| runningInBrowser(): boolean                                       | 判断代码是否在浏览器中运行
| runningInNode(): boolean                                          | 判断代码是否在 Node 中运行
| isDarkMode(): boolean                                             | 判断系统是否是暗模式
| toTop(element: HTMLElement): void                                 | 将 dom 元素滚动到顶部
| toBottom(element: HTMLElement): void                              | 将 dom 元素滚动到底部
| jsonToMap(json: string): Map<any, any>                            | 将 JSON 转换为 MAP
| object2Json(obj: any): string                                     | 对象转 json 字符串
| json2Object(json: string): any                                    | json 字符串转对象
| join(array: any, joiner: string, propertyName?: string): string   | 通过连接字符串连接数组
| deepClone(target: any): any                                       | 深度克隆对象
| buildHttpQueryString(parameters: any, encode?: true): string      | 构建 Http Get 请求查询参数 url
| concatUrl(url1: string, url2: string): string                     | 连接两个 URL 组成一个 URL
| removeUrlPrefixSlash(url: string): string                         | 移除 URL 中所有的前导 /
| removeUrlSuffixSlash(url: string): string                         | 移除 URL 中所有的后导 /
| addClassName(target: HTMLElement, className: string): void        | 给 dom 元素增加 class
| removeClassName(target: HTMLElement, className: string): void     | 移除 dom 元素的 class
| getJavascriptElementUrls(): string[]                              | 获取页面所有外部引用的 javascript 的 url
| appendJavascriptTag(src: string, target?: HTMLElement, callback?: any): void | 在 dom 中插入 <script src="..."></script> 标签元素
| download(url: string): void                                       | 下载 URL, 创建 iframe, 并在 iframe 中下载资源, 避免页面跳转
| setTitile(title: string): void                                    | 设置页面标题
| setFavicon(favicon: string): void                                 | 设置页面 icon
| removeDomElement(element: HTMLElement / string): void             | 移除 dom 元素
| range(value: number, min: number, max: number): number            | 返回在一个数值范围内的数值
| mergeObject(target: object, source: object): object               | 合并对象，将源对象的属性合并到目标对象上
| objectValueEquals(o1: object, o2: object): boolean                | 判断两个对象的值是否相等
| pickNotNil(object: object): object                                | 仅保留对象字段非空值
| extractProperties(objects: object[], propertyName: string): object[]  | 抽取对象的属性
| uuid(): string                                                    | 生成 UUID
| px(value: any)                                                    | 计算像素
| generateIntervalRange(minIncluded: boolean, min: any, max: any, maxIncluded: boolean) : string | 生成区间的数学表达格式字符串
| hasOwnProperty(obj: object, propertyName: string) : boolean       | 判断某个对象是否含有某个属性
|===

== 全局事件

[source,javaScript]
----
import { eventBus } from 'platform-core';

// 监听全局事件
eventBus.on('onLocaleChanged',(locale:string)=>{});
eventBus.on('onWindowResize',()=>{});

// 发送全局事件
eventBus.emit('eventName');
----