# 📦 已安装的工具库总结 本文档列出了项目中新安装的所有工具库及其用途。 ## ✅ 安装完成的库 ### 🛠️ 工具类库 #### 1. **Lodash-ES** `^4.17.21` - **用途**: 强大的 JavaScript 工具函数库(ES modules 版本) - **功能**: 数组、对象、字符串操作,防抖、节流等 - **优势**: 支持 tree-shaking,按需导入,减小包体积 - **文档**: https://lodash.com/docs/ - **示例**: ```typescript import { debounce, uniq } from 'lodash-es'; debounce(fn, 300); // 防抖 uniq([1, 2, 2, 3]); // 去重 ``` #### 2. **Day.js** `^1.11.19` - **用途**: 轻量级日期处理库(仅 2KB) - **功能**: 日期格式化、相对时间、日期计算 - **文档**: https://day.js.org/ - **示例**: ```typescript import dayjs from 'dayjs'; dayjs().format('YYYY-MM-DD'); dayjs().fromNow(); // '几秒前' ``` #### 3. **Axios** `^1.13.1` - **用途**: HTTP 请求库 - **功能**: Promise API、请求/响应拦截器、取消请求 - **文档**: https://axios-http.com/ - **示例**: ```typescript import axios from 'axios'; const data = await axios.get('/api/users'); ``` #### 4. **Zustand** `^5.0.8` - **用途**: 轻量级状态管理库 - **功能**: 简单的全局状态管理,比 Redux 简单得多 - **文档**: https://zustand-demo.pmnd.rs/ - **示例**: ```typescript import { create } from 'zustand'; const useStore = create((set) => ({ count: 0, increment: () => set((state) => ({ count: state.count + 1 })), })); ``` #### 5. **React Hook Form** `^7.66.0` - **用途**: 高性能表单处理库 - **功能**: 表单验证、错误处理、性能优化 - **文档**: https://react-hook-form.com/ - **示例**: ```typescript import { useForm } from 'react-hook-form'; const { register, handleSubmit } = useForm(); ``` #### 6. **Zod** `^4.1.12` - **用途**: TypeScript 优先的数据验证库 - **功能**: 数据验证、类型推断、错误处理 - **文档**: https://zod.dev/ - **示例**: ```typescript import { z } from 'zod'; const schema = z.object({ email: z.string().email(), }); ``` --- ### 📱 Expo 原生模块 #### 7. **AsyncStorage** `^2.2.0` - **包名**: @react-native-async-storage/async-storage - **用途**: React Native 本地持久化存储 - **功能**: 键值对存储、异步 API - **文档**: https://react-native-async-storage.github.io/async-storage/ - **示例**: ```typescript import AsyncStorage from '@react-native-async-storage/async-storage'; await AsyncStorage.setItem('key', 'value'); ``` #### 8. **Expo Image** `^3.0.10` - **用途**: 性能优化的图片组件 - **功能**: 占位符、缓存、渐进加载 - **文档**: https://docs.expo.dev/versions/latest/sdk/image/ - **示例**: ```typescript import { Image } from 'expo-image'; ``` #### 9. **Expo Haptics** `^15.0.7` - **用途**: 触觉反馈功能 - **功能**: 震动反馈、成功/错误/警告反馈 - **文档**: https://docs.expo.dev/versions/latest/sdk/haptics/ - **示例**: ```typescript import * as Haptics from 'expo-haptics'; Haptics.impactAsync(Haptics.ImpactFeedbackStyle.Light); ``` --- ### 🔧 开发工具 #### 10. **@types/lodash-es** `^4.17.12` - **用途**: Lodash-ES 的 TypeScript 类型定义 - **功能**: 提供完整的类型提示和类型检查 - **安装类型**: devDependencies --- ## 📊 安装统计 - **总计**: 10 个包 - **生产依赖**: 9 个 - **开发依赖**: 1 个 - **总大小**: 约 15MB(node_modules) --- ## 🎯 使用场景 ### 数据处理 - **Lodash**: 数组、对象操作 - **Day.js**: 日期时间处理 ### 网络请求 - **Axios**: HTTP 请求 - **Zod**: API 响应验证 ### 状态管理 - **Zustand**: 全局状态 - **AsyncStorage**: 本地持久化 ### 表单处理 - **React Hook Form**: 表单管理 - **Zod**: 表单验证 ### 用户体验 - **Expo Image**: 图片优化 - **Expo Haptics**: 触觉反馈 --- ## 🚀 快速开始 ### 1. 查看使用指南 详细的使用方法请查看 [LIBRARIES.md](./LIBRARIES.md) ### 2. 推荐的项目结构 ``` src/ ├── utils/ │ ├── api.ts # Axios 配置 │ ├── storage.ts # AsyncStorage 封装 │ └── date.ts # Day.js 工具函数 ├── stores/ │ ├── userStore.ts # 用户状态(Zustand) │ └── settingsStore.ts ├── schemas/ │ ├── auth.ts # 认证相关的 Zod schema │ └── user.ts └── hooks/ ├── useDebounce.ts # Lodash debounce 封装 └── useThrottle.ts ``` ### 3. 创建基础工具文件 **utils/api.ts** - Axios 配置 ```typescript import axios from 'axios'; import AsyncStorage from '@react-native-async-storage/async-storage'; const api = axios.create({ baseURL: 'https://api.example.com', timeout: 10000, }); api.interceptors.request.use(async (config) => { const token = await AsyncStorage.getItem('token'); if (token) { config.headers.Authorization = `Bearer ${token}`; } return config; }); export default api; ``` **utils/storage.ts** - 存储工具 ```typescript import AsyncStorage from '@react-native-async-storage/async-storage'; class Storage { static async setObject(key: string, value: T) { await AsyncStorage.setItem(key, JSON.stringify(value)); } static async getObject(key: string): Promise { const value = await AsyncStorage.getItem(key); return value ? JSON.parse(value) : null; } } export default Storage; ``` **stores/userStore.ts** - 用户状态 ```typescript import { create } from 'zustand'; interface UserState { user: any | null; setUser: (user: any) => void; } export const useUserStore = create((set) => ({ user: null, setUser: (user) => set({ user }), })); ``` --- ## 💡 最佳实践 ### 1. 性能优化 - ✅ 使用 Lodash-ES 的按需导入,减小包体积 - ✅ 使用 `debounce` 和 `throttle` 优化频繁触发的事件 - ✅ 使用 Zustand 的选择器避免不必要的重渲染 - ✅ 使用 Expo Image 的缓存策略优化图片加载 ### 2. 类型安全 - ✅ 使用 Zod 定义数据结构并自动生成 TypeScript 类型 - ✅ 为 Zustand store 定义完整的类型接口 - ✅ 使用 `@types/lodash-es` 获得完整的类型提示 ### 3. 代码组织 - ✅ 将 API 配置集中在 `utils/api.ts` - ✅ 将存储操作封装在 `utils/storage.ts` - ✅ 将状态管理放在 `stores/` 目录 - ✅ 将验证规则放在 `schemas/` 目录 ### 4. 错误处理 - ✅ 在 Axios 拦截器中统一处理错误 - ✅ 使用 try-catch 包裹异步操作 - ✅ 提供用户友好的错误提示 --- ## 📚 相关文档 - [LIBRARIES.md](./LIBRARIES.md) - 详细的使用指南和示例 - [README.md](./README.md) - 项目总体说明 - [KNOWN_ISSUES.md](./KNOWN_ISSUES.md) - 已知问题和解决方案 --- ## 🎉 总结 所有工具库已成功安装并可以直接使用!这些库涵盖了: - ✅ **数据处理** - Lodash-ES(支持 tree-shaking), Day.js - ✅ **网络请求** - Axios - ✅ **状态管理** - Zustand - ✅ **表单处理** - React Hook Form, Zod - ✅ **本地存储** - AsyncStorage - ✅ **用户体验** - Expo Image, Expo Haptics 开始使用这些强大的工具来构建你的应用吧!🚀