11 KiB
11 KiB
项目概述
**本文档引用的文件** - [README.md](file://README.md) - [package.json](file://package.json) - [index.js](file://index.js) - [TsCommon.js](file://src/utils/TsCommon.js) - [TsCrypto.js](file://src/utils/TsCrypto.js) - [TsStorage.js](file://src/utils/TsStorage.js) - [TsGlobalConfig.js](file://src/utils/TsGlobalConfig.js) - [TsSM4.js](file://src/utils/TsSM4.js) - [TsHttpUtil.js](file://src/https/TsHttpUtil.js)目录
项目简介
npm-tool 是一个专为前端开发设计的综合性工具包,由铁晟科技开发和维护。该项目旨在为前端开发者提供一套统一、可靠且功能丰富的工具集,涵盖网络请求、数据加密、本地存储、通用工具方法等多个方面。
项目目标
- 统一工具标准化:提供一套标准化的前端工具函数,减少重复开发工作
- 安全数据传输:内置SM4对称加密算法,确保数据传输安全
- 简化开发流程:通过封装常用功能,提升开发效率
- 企业级应用支持:针对企业级应用场景进行优化和扩展
核心价值
- 易用性:简洁的API设计,降低学习成本
- 可靠性:经过企业级项目验证的稳定实现
- 安全性:内置加密机制,保障数据安全
- 可扩展性:模块化设计,便于功能扩展
项目结构
项目采用模块化的目录结构,按照功能领域进行组织:
graph TB
subgraph "项目根目录"
A[index.js] --> B[src/]
A --> C[package.json]
A --> D[README.md]
end
subgraph "src/ 源码目录"
B --> E[utils/]
B --> F[https/]
E --> G[TsCommon.js]
E --> H[TsCrypto.js]
E --> I[TsStorage.js]
E --> J[TsGlobalConfig.js]
E --> K[TsSM4.js]
F --> L[TsHttpUtil.js]
end
subgraph "构建入口"
M[package.json] --> N[main: index.js]
N --> O[模块导出]
end
图表来源
章节来源
核心组件
npm-tool 项目包含六个核心模块,每个模块都针对特定的功能领域:
主要模块概览
| 模块名称 | 功能描述 | 导出方式 |
|---|---|---|
| TsHttpUtil | HTTP网络请求封装 | 网络请求、数据传输 |
| TsCommon | 通用工具方法 | 数据处理、字符串操作 |
| TsStorage | 本地存储管理 | 数据持久化、状态管理 |
| TsSM4 | SM4加密算法实现 | 对称加密、数据保护 |
| TsCrypto | 加密工具类 | 统一加密接口 |
| TsGlobalConfig | 全局配置管理 | 应用配置、参数设置 |
章节来源
架构概览
项目采用分层架构设计,各模块之间通过清晰的接口进行交互:
graph TD
subgraph "应用层"
APP[业务应用]
end
subgraph "工具层"
HTTP[TsHttpUtil<br/>HTTP请求]
STORAGE[TsStorage<br/>本地存储]
COMMON[TsCommon<br/>通用工具]
end
subgraph "加密层"
CRYPTO[TsCrypto<br/>加密工具]
SM4[TsSM4<br/>SM4算法]
BASE64[base64-js<br/>编码转换]
end
subgraph "配置层"
GLOBAL[TsGlobalConfig<br/>全局配置]
REQUEST[umi-request<br/>HTTP客户端]
end
subgraph "外部依赖"
EXT1[浏览器环境]
EXT2[Node.js环境]
end
APP --> HTTP
APP --> STORAGE
APP --> COMMON
HTTP --> STORAGE
HTTP --> CRYPTO
HTTP --> GLOBAL
HTTP --> REQUEST
CRYPTO --> SM4
CRYPTO --> BASE64
STORAGE --> COMMON
STORAGE --> EXT1
SM4 --> BASE64
SM4 --> EXT2
GLOBAL --> EXT1
REQUEST --> EXT1
图表来源
详细组件分析
TsHttpUtil - HTTP请求封装
TsHttpUtil 是项目的核心模块,提供了完整的HTTP请求解决方案:
核心功能特性
sequenceDiagram
participant Client as 客户端应用
participant HttpUtil as TsHttpUtil
participant Crypto as TsCrypto
participant Storage as TsStorage
participant Request as umi-request
Client->>HttpUtil : 发送请求
HttpUtil->>Storage : 获取用户token
Storage-->>HttpUtil : 返回token
HttpUtil->>HttpUtil : 处理请求参数
HttpUtil->>Crypto : 加密数据(可选)
Crypto-->>HttpUtil : 返回加密结果
HttpUtil->>Request : 发送HTTP请求
Request-->>HttpUtil : 返回响应
HttpUtil->>Crypto : 解密响应(可选)
Crypto-->>HttpUtil : 返回解密结果
HttpUtil-->>Client : 返回处理后的数据
图表来源
支持的请求类型
| 请求方法 | 参数类型 | 使用场景 |
|---|---|---|
| GET | params | 查询数据、获取列表 |
| POST | data | 提交表单、新增数据 |
| POST(form) | data | 表单提交、文件上传 |
章节来源
TsStorage - 本地存储管理
TsStorage 提供了简化的本地存储接口,支持对象序列化和类型转换:
存储策略
flowchart TD
A[存储请求] --> B{数据类型}
B --> |对象| C[JSON序列化]
B --> |字符串| D[直接存储]
B --> |数字| E[转换为字符串]
C --> F[localStorage.setItem]
D --> F
E --> F
F --> G[数据读取]
G --> H{数据格式}
H --> |JSON| I[JSON反序列化]
H --> |其他| J[原样返回]
I --> K[返回原始对象]
J --> K
图表来源
章节来源
TsSM4 - SM4加密算法
TsSM4 实现了国家商用密码标准的SM4对称加密算法:
加密模式支持
| 模式 | 特点 | 适用场景 |
|---|---|---|
| CBC | 链式加密,安全性高 | 数据传输加密 |
| ECB | 简单加密,性能好 | 小数据快速加密 |
章节来源
TsCommon - 通用工具方法
TsCommon 提供了常用的JavaScript工具函数:
核心工具函数
| 函数名 | 功能描述 | 使用场景 |
|---|---|---|
| isEmpty | 检查值是否为空 | 表单验证、数据校验 |
| parseJSON | 安全解析JSON | API响应处理 |
| getParamFormUrl | 获取URL参数 | 路由参数处理 |
| isDevelopment | 检查开发环境 | 条件逻辑判断 |
章节来源
技术栈与依赖
核心依赖
| 依赖包 | 版本 | 用途 | 重要性 |
|---|---|---|---|
| base64-js | 1.5.1 | Base64编解码 | 高 |
| umi-request | 1.4.0 | HTTP请求库 | 高 |
| Node.js | >= 12.0.0 | 运行环境 | 基础 |
| 浏览器 | >= IE11 | 前端运行环境 | 基础 |
开发依赖
项目目前没有定义专门的开发依赖,主要依赖于运行时环境提供的API。
兼容性信息
- Node.js版本: >= 12.0.0
- 浏览器支持: IE11+,现代浏览器完全支持
- ES规范: ES6+语法支持
- 模块系统: CommonJS模块系统
章节来源
设计理念与架构原则
模块化设计原则
- 单一职责原则: 每个模块专注于特定功能领域
- 开放封闭原则: 对扩展开放,对修改封闭
- 依赖倒置原则: 高层模块不依赖低层模块
安全性设计
graph LR
subgraph "数据流"
A[明文数据] --> B[加密算法]
B --> C[密文数据]
C --> D[网络传输]
D --> E[接收端]
E --> F[解密算法]
F --> G[明文数据]
end
subgraph "安全措施"
H[密钥管理] --> B
I[随机IV] --> B
J[完整性校验] --> F
end
图表来源
错误处理机制
项目实现了多层次的错误处理策略:
- 网络层错误: 通过umi-request统一处理
- 业务层错误: 通过回调函数处理
- 数据层错误: 通过try-catch捕获
章节来源
应用场景与使用示例
常见使用场景
1. 网络请求场景
// 基础GET请求
const response = await HttpUtil.get('/api/users');
// 带参数的请求
const users = await HttpUtil.get('/api/users', {
params: {page: 1, pageSize: 10}
});
// POST请求
const result = await HttpUtil.post('/api/users', {
name: '张三',
email: 'zhangsan@example.com'
});
2. 数据加密场景
// 设置全局加密配置
HttpUtil.setConfig({
encryptBody: true,
base64Key: 'your-base64-key-here'
});
// 自动加密的数据传输
const sensitiveData = await HttpUtil.post('/api/secure', {
userId: 123,
token: 'abc-def-ghi'
});
3. 本地存储场景
// 保存用户信息
Storage.saveUserToken('jwt-token-here');
Storage.save('userInfo', {id: 1, name: '张三'});
// 获取用户信息
const token = Storage.getUserToken();
const userInfo = Storage.get('userInfo', {});
最佳实践建议
- 配置管理: 使用全局配置集中管理应用设置
- 错误处理: 为所有异步操作添加适当的错误处理
- 数据验证: 在发送请求前验证数据格式
- 安全考虑: 敏感数据必须进行加密传输
性能考虑
优化策略
- 懒加载: 按需加载模块,减少初始加载时间
- 缓存机制: 合理使用localStorage缓存数据
- 批量操作: 对频繁操作进行批处理优化
- 内存管理: 及时清理不需要的对象引用
性能监控
建议在生产环境中添加以下监控指标:
- 请求响应时间
- 错误率统计
- 缓存命中率
- 内存使用情况
总结
npm-tool 项目是一个设计精良、功能完备的前端工具包,具有以下特点:
优势总结
- 功能完整: 涵盖了前端开发的主要需求场景
- 设计优雅: 模块化设计,接口简洁易用
- 安全可靠: 内置加密机制,保障数据安全
- 易于扩展: 清晰的架构设计,便于功能扩展
适用范围
- 企业级Web应用开发
- 中后台管理系统
- 移动端Hybrid应用
- 微信小程序开发
发展方向
- 测试覆盖: 增加单元测试和集成测试
- 文档完善: 提供更详细的API文档
- 性能优化: 持续优化性能表现
- 生态建设: 扩展更多实用工具模块
该项目为前端开发者提供了一个可靠的工具基础,能够显著提升开发效率和代码质量。