# API 参考手册
**本文档引用的文件**
- [index.js](file://index.js)
- [package.json](file://package.json)
- [README.md](file://README.md)
- [TsCommon.js](file://src/utils/TsCommon.js)
- [TsCrypto.js](file://src/utils/TsCrypto.js)
- [TsSM4.js](file://src/utils/TsSM4.js)
- [TsStorage.js](file://src/utils/TsStorage.js)
- [TsGlobalConfig.js](file://src/utils/TsGlobalConfig.js)
- [TsHttpUtil.js](file://src/https/TsHttpUtil.js)
## 目录
1. [简介](#简介)
2. [项目结构](#项目结构)
3. [核心组件](#核心组件)
4. [架构概览](#架构概览)
5. [详细组件分析](#详细组件分析)
6. [依赖关系分析](#依赖关系分析)
7. [性能考虑](#性能考虑)
8. [故障排除指南](#故障排除指南)
9. [版本兼容性与迁移](#版本兼容性与迁移)
10. [结论](#结论)
## 简介
npm-tool 是一个功能丰富的 JavaScript 工具包,专为现代 Web 应用开发而设计。该工具包提供了完整的 HTTP 请求处理、数据加密解密、本地存储管理、通用工具函数等功能模块,旨在简化开发者在日常开发中的重复工作。
本工具包的核心特性包括:
- 完整的 HTTP 请求封装,支持 GET、POST、表单提交等多种请求方式
- 基于 SM4 算法的安全数据加密解密功能
- 智能的本地存储管理,支持自动序列化和反序列化
- 丰富的通用工具函数,涵盖字符串处理、数据验证等常用操作
- 灵活的全局配置系统,支持运行时动态配置
## 项目结构
npm-tool 采用模块化的文件组织结构,主要分为以下几个核心目录:
```mermaid
graph TB
subgraph "项目根目录"
A[index.js]
B[package.json]
C[README.md]
end
subgraph "源代码目录 (src/)"
D[src/utils/]
E[src/https/]
end
subgraph "工具模块 (src/utils/)"
F[TsCommon.js]
G[TsStorage.js]
H[TsCrypto.js]
I[TsSM4.js]
J[TsGlobalConfig.js]
end
subgraph "HTTP模块 (src/https/)"
K[TsHttpUtil.js]
end
A --> D
A --> E
D --> F
D --> G
D --> H
D --> I
D --> J
E --> K
```
**图表来源**
- [index.js:1-16](file://index.js#L1-L16)
- [TsCommon.js:1-98](file://src/utils/TsCommon.js#L1-L98)
- [TsStorage.js:1-55](file://src/utils/TsStorage.js#L1-L55)
- [TsCrypto.js:1-34](file://src/utils/TsCrypto.js#L1-L34)
- [TsSM4.js:1-456](file://src/utils/TsSM4.js#L1-L456)
- [TsGlobalConfig.js:1-34](file://src/utils/TsGlobalConfig.js#L1-L34)
- [TsHttpUtil.js:1-171](file://src/https/TsHttpUtil.js#L1-L171)
**章节来源**
- [index.js:1-16](file://index.js#L1-L16)
- [package.json:1-24](file://package.json#L1-L24)
## 核心组件
npm-tool 工具包由六个主要模块组成,每个模块都提供特定的功能领域:
### 主要模块概览
| 模块名称 | 文件路径 | 功能描述 |
|---------|----------|----------|
| TsHttpUtil | src/https/TsHttpUtil.js | HTTP 请求处理和网络通信 |
| TsCommon | src/utils/TsCommon.js | 通用工具函数集合 |
| TsStorage | src/utils/TsStorage.js | 本地存储管理 |
| TsCrypto | src/utils/TsCrypto.js | 数据加密解密服务 |
| TsSM4 | src/utils/TsSM4.js | SM4 算法实现 |
| TsGlobalConfig | src/utils/TsGlobalConfig.js | 全局配置管理 |
### 版本信息
- **包名**: @tiesheng/npm-tool
- **当前版本**: 2.0.6
- **主要依赖**:
- base64-js: 1.5.1 (Base64 编码解码)
- umi-request: 1.4.0 (HTTP 请求封装)
**章节来源**
- [package.json:1-24](file://package.json#L1-L24)
- [index.js:8-15](file://index.js#L8-L15)
## 架构概览
npm-tool 采用了清晰的分层架构设计,各模块之间通过明确的接口进行交互:
```mermaid
graph TB
subgraph "应用层"
APP[业务应用]
end
subgraph "HTTP 层"
HTTP[TsHttpUtil]
CONFIG[TsGlobalConfig]
end
subgraph "加密层"
CRYPTO[TsCrypto]
SM4[TsSM4]
end
subgraph "存储层"
STORAGE[TsStorage]
COMMON[TsCommon]
end
subgraph "外部依赖"
UMI[umi-request]
BASE64[base64-js]
end
APP --> HTTP
HTTP --> CONFIG
HTTP --> STORAGE
HTTP --> CRYPTO
CRYPTO --> SM4
STORAGE --> COMMON
HTTP --> UMI
CRYPTO --> BASE64
SM4 --> BASE64
```
**图表来源**
- [TsHttpUtil.js:1-171](file://src/https/TsHttpUtil.js#L1-L171)
- [TsCrypto.js:1-34](file://src/utils/TsCrypto.js#L1-L34)
- [TsSM4.js:1-456](file://src/utils/TsSM4.js#L1-L456)
- [TsStorage.js:1-55](file://src/utils/TsStorage.js#L1-L55)
- [TsGlobalConfig.js:1-34](file://src/utils/TsGlobalConfig.js#L1-L34)
### 组件交互流程
```mermaid
sequenceDiagram
participant Client as 应用客户端
participant HttpUtil as HTTP工具
participant Crypto as 加密服务
participant Storage as 存储服务
participant Config as 配置服务
Client->>HttpUtil : 发起HTTP请求
HttpUtil->>Config : 获取全局配置
HttpUtil->>Storage : 获取用户令牌
HttpUtil->>Crypto : 加密请求数据(可选)
HttpUtil->>HttpUtil : 发送网络请求
HttpUtil->>Crypto : 解密响应数据(可选)
HttpUtil->>Storage : 更新状态信息
HttpUtil-->>Client : 返回处理后的结果
```
**图表来源**
- [TsHttpUtil.js:99-134](file://src/https/TsHttpUtil.js#L99-L134)
- [TsCrypto.js:19-30](file://src/utils/TsCrypto.js#L19-L30)
- [TsStorage.js:41-43](file://src/utils/TsStorage.js#L41-L43)
## 详细组件分析
### HTTP 请求处理模块 (TsHttpUtil)
HTTP 请求处理模块是整个工具包的核心,提供了完整的网络通信能力。
#### 主要功能
1. **HTTP 请求封装**: 支持 GET、POST、表单提交等多种请求方式
2. **数据加密**: 可选的请求体加密功能
3. **响应处理**: 统一的响应数据处理和错误处理
4. **配置管理**: 灵活的全局配置系统
#### API 接口定义
##### get 方法
- **功能**: 发送 GET 请求
- **参数**:
- url: string - 请求的 URL 地址
- params: object - 查询参数对象 (可选)
- options: object - 请求选项 (可选)
- **返回值**: Promise