# 薇钱包 H5 项目 - 模块化重构说明 ## 📁 新的目录结构 ``` web/ ├── src/js/ │ ├── config/ # 配置模块 │ │ ├── index.js # 配置统一导出 │ │ ├── api.config.js # API 配置 │ │ └── app.config.js # 应用配置 │ │ │ ├── core/ # 核心模块 │ │ ├── index.js # 核心模块统一导出 │ │ ├── api.js # API 请求封装 │ │ ├── user-cache.js # 用户缓存管理 │ │ ├── form-id.js # 表单 ID 生成器 │ │ └── draft-manager.js # 草稿管理器 │ │ │ ├── utils/ # 工具函数库 │ │ ├── index.js # 工具函数统一导出 │ │ ├── validator.js # 表单验证器 │ │ ├── formatter.js # 格式化工具 │ │ └── helper.js # 通用辅助函数 │ │ │ ├── services/ # 业务服务层 │ │ ├── index.js # 服务层统一导出 │ │ ├── sms.service.js # 短信服务 │ │ ├── auth.service.js # 认证服务 │ │ ├── loan.service.js # 借款服务 │ │ └── form.service.js # 表单服务 │ │ │ ├── ui/ # UI 组件 │ │ ├── index.js # UI 组件统一导出 │ │ ├── modal.js # 模态框基类 │ │ ├── picker.js # 选择器组件 │ │ ├── toast.js # Toast 提示 │ │ └── city-picker.js # 城市选择器 │ │ │ ├── pages/ # 页面逻辑 │ │ ├── index.js # 页面逻辑统一导出 │ │ ├── index.page.js # 主页面逻辑 │ │ └── basic-info.page.js # 基本信息页面逻辑 │ │ │ └── main.js # 应用主入口 │ ├── index.html # 主借款申请页面 ├── basic-info.html # 基本信息填写页面 ├── config.js # 旧配置文件(已废弃) ├── script.js # 旧主页面逻辑(已废弃) └── basic-info.js # 旧基本信息页面逻辑(已废弃) ``` ## 🚀 使用新模块化结构 ### 方法 1: 使用 ES6 模块(推荐) 在 HTML 文件中使用 ` ``` **注意:** - 需要删除旧的 ` ``` 添加新的 module script: ```html ``` ### 步骤 3: 测试功能 1. 启动开发服务器: ```bash node server.js ``` 2. 在浏览器中访问 `http://localhost:3000` 3. 测试所有功能: - 借款申请流程 - 短信验证 - 资产信息填写 - 基本信息填写 - 表单提交 ## ✨ 新架构的优势 ### 1. 更好的代码组织 - **职责分离**:每个模块只负责一个功能 - **易于定位**:问题查找更快 - **代码复用**:组件和服务可在多个页面使用 ### 2. 更强的可维护性 - **单一职责**:文件小,易于理解 - **依赖清晰**:通过 import 明确依赖关系 - **易于扩展**:新增功能只需添加新模块 ### 3. 更好的开发体验 - **IDE 支持**:完整的代码提示和跳转 - **调试友好**:源码映射支持 - **版本控制**:小的改动更清晰 ### 4. 性能优化潜力 - **按需加载**:ES6 模块支持按需加载 - **Tree Shaking**:未使用的代码可被删除 - **缓存优化**:模块级别的缓存 ## 🐛 常见问题 ### Q1: 浏览器报错 "Cannot use import statement outside a module" **原因:** 浏览器不支持 ES6 模块或 script 标签没有 `type="module"`。 **解决:** 确保 script 标签包含 `type="module"`: ```html ``` ### Q2: CORS 错误 **原因:** 直接使用 file:// 协议打开 HTML 文件。 **解决:** 使用 HTTP 服务器: ```bash # 使用 Node.js npx serve . # 或使用 Python python -m http.server 8000 # 或使用项目中的 server.js node server.js ``` ### Q3: 找不到模块 **原因:** 路径错误或文件名错误。 **解决:** - 确保所有 import 路径以 `./` 或 `../` 开头 - 检查文件名和扩展名是否正确 - 确保导出语句(export)正确 ## 📚 进一步阅读 - [ES6 模块入门](https://developer.mozilla.org/zh-CN/docs/Web/JavaScript/Guide/Modules) - [Vite 官方文档](https://cn.vitejs.dev/) - [JavaScript 模块化最佳实践](https://www.patterns.dev/posts/modules/) ## 🤝 贡献 在添加新功能时,请遵循现有的模块化结构: 1. **配置** → 添加到 `config/` 目录 2. **工具函数** → 添加到 `utils/` 目录 3. **业务逻辑** → 添加到 `services/` 目录 4. **UI 组件** → 添加到 `ui/` 目录 5. **页面逻辑** → 添加到 `pages/` 目录 记得在相应的 `index.js` 文件中导出新模块! --- **重构完成日期:** 2025-01-21 **重构人员:** Claude Code **版本:** 2.0.0