# YxzQrCode
**Repository Path**: itxz-repository/yxz-qr-code
## Basic Information
- **Project Name**: YxzQrCode
- **Description**: 一款功能完整的微信小程序二维码工具,支持扫码识别、生成二维码和条形码等功能
- **Primary Language**: JavaScript
- **License**: MIT
- **Default Branch**: develop
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2025-06-21
- **Last Updated**: 2025-08-25
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 小籽二维码 - 微信小程序
扫码生成 · 简单便捷
一款功能完整的微信小程序二维码工具,支持扫码识别、生成二维码和条形码等功能
## ✨ 主要功能
### 🔍 扫码识别
- **智能双模式**:支持微信原生扫码和自定义摄像头两种模式
- **相册识别**:优先使用微信原生识别,失败后可选择服务器识别
- **离线友好**:离线状态下自动禁用相册识别功能
- **多格式支持**:二维码、条形码等多种格式智能识别
- **结果处理**:统一的扫码结果展示界面,支持复制和分享
### 📱 二维码生成
- **混合生成策略**:本地生成(标准二维码)+ 服务器生成(微型二维码)
- **智能策略选择**:根据配置和网络状态自动选择最佳生成方式
- **离线支持**:标准二维码支持完全离线生成
- **自定义样式**:支持颜色、尺寸等参数自定义
- **高清输出**:自适应屏幕分辨率,生成高质量图片
### 📊 条形码生成
- **本地优先**:默认使用本地JsBarcode库生成,速度快、无网络依赖
- **多格式支持**:Code128、Code39、EAN-13、EAN-8、ITF等标准格式
- **配置灵活**:可在配置文件中调整各类型码的生成策略
- **服务器备选**:支持配置服务器作为备选生成方案
- **自适应布局**:条形码自动适配容器尺寸
### 📝 扫码记录
- **自动保存**:所有扫码和生成操作自动记录
- **统一管理**:扫码记录、生成记录分类展示
- **快速操作**:支持复制、分享、删除等便捷操作
- **数据统计**:显示使用统计和记录数量
## 🛠️ 技术特点
- **智能混合架构**:本地生成 + 服务器生成,兼顾性能与功能完整性
- **离线优先设计**:核心功能支持完全离线使用,网络异常时自动降级
- **配置化策略**:通过配置文件灵活控制各功能的生成策略和行为
- **状态管理优化**:全局状态管理,页面间状态同步和错误恢复
- **组件化开发**:统一的UI组件(如扫码结果弹窗),提升代码复用性
- **错误处理机制**:完善的错误分类处理,用户友好的错误提示
- **性能优化**:调试输出清理、懒加载、Canvas绘制优化
- **iOS风格界面**:现代化设计风格,流畅的用户体验
## 📁 项目结构
```
QrCode/
├── app.js # 应用入口文件
├── app.json # 应用配置文件
├── app.wxss # 全局样式文件
├── assets/ # 静态资源目录
│ ├── icons/ # 图标文件
│ └── js/ # 第三方JS库
├── config/ # 配置文件目录
│ ├── api-config.js # API配置模板
│ ├── api-config.local.js # 本地API配置(需创建)
│ └── config-manager.js # 配置管理器
├── pages/ # 页面目录
│ ├── index/ # 首页
│ ├── custom-scan/ # 自定义扫码页面
│ ├── generate-qr/ # 二维码生成页面
│ ├── generate-barcode/ # 条形码生成页面
│ ├── generate-result/ # 生成结果页面
│ └── history/ # 历史记录页面
├── components/ # 自定义组件
│ └── scan-result-modal/ # 扫码结果弹窗组件
└── utils/ # 工具类目录
├── api-service.js # API服务
├── history-manager.js # 历史记录管理
├── jsbarcode-util.js # 条形码生成工具
├── message-util.js # 消息提示工具
├── qrcode.js # 二维码工具
└── util.js # 通用工具函数
```
## 🚀 快速开始
### 环境要求
- 微信开发者工具
- Node.js (可选,用于开发工具)
### 安装步骤
1. **克隆项目**
```bash
git clone [项目地址]
cd QrCode
```
2. **配置项目**
- 复制 `config/api-config.js` 为 `config/api-config.local.js`
- 在 `config/api-config.local.js` 中配置服务器地址、企业代码等信息
- 根据需要调整 `localGeneration` 配置以控制本地/服务器生成策略
- 在 `project.config.json` 中填入您的小程序AppID
> 💡 **配置说明**:项目会优先使用 `api-config.local.js`(不会上传到Git),如果不存在则使用默认的 `api-config.js`。新增的 `localGeneration` 配置可以灵活控制各类型码的生成方式。
3. **微信开发者工具导入**
- 打开微信开发者工具
- 选择"导入项目"
- 选择项目目录
- 确认AppID配置正确
4. **预览和调试**
- 点击"编译"按钮
- 使用"真机调试"测试摄像头功能
- 可使用"预览"功能在手机上体验
> ⚠️ **重要提醒**:首次使用前请仔细阅读 [DEPLOYMENT.md](DEPLOYMENT.md) 文件了解如何正确配置敏感信息。
## 📋 功能详情
### 扫码功能
- 支持QR码、Data Matrix、PDF417等二维码格式
- 支持EAN、UPC、Code128等条形码格式
- 自动识别内容类型(URL、文本、WiFi配置等)
- 提供历史记录和快速操作
### 生成功能
- **混合生成策略**:本地生成(快速、离线)+ 服务器生成(功能完整)
- **智能策略选择**:根据码类型、网络状态、用户配置自动选择最佳方案
- **二维码生成**:标准二维码本地生成,微型二维码服务器生成
- **条形码生成**:支持Code128、Code39、EAN等格式的本地生成
- **配置化管理**:可通过配置文件灵活调整各类型码的生成策略
- **样式自定义**:颜色、尺寸、边距等参数调整
### 历史管理
- 自动保存所有操作记录
- 按日期、类型分类展示
- 支持搜索和筛选
- 数据导出和备份功能
## 🎨 界面预览
- **首页**:功能导航和快速操作
- **扫码页**:实时摄像头预览和识别
- **生成页**:参数配置和实时预览
- **历史页**:记录列表和详情查看
## 🔧 自定义配置
### API配置
修改 `config/api-config.local.js` 文件来配置后端服务和生成策略:
```javascript
const ApiConfig = {
server: {
environments: {
development: 'http://127.0.0.1:8980',
production: 'http://your-api-domain.com'
},
timeout: 30000
},
// 本地生成配置
localGeneration: {
enabled: true,
strategies: {
qr_standard: { useLocal: true, allowServerFallback: false },
qr_micro: { useLocal: false, allowServerFallback: true },
barcode_128: { useLocal: true, allowServerFallback: false }
// 更多配置...
}
}
// 其他配置...
}
```
### 生成策略配置
可以灵活配置各类型码的生成策略:
```javascript
// 配置示例
strategies: {
// 标准二维码使用本地生成,快速且离线可用
qr_standard: {
useLocal: true,
allowServerFallback: false
},
// 微型二维码使用服务器生成(本地不支持)
qr_micro: {
useLocal: false,
allowServerFallback: true
},
// 条形码优先本地生成,服务器作为备选
barcode_128: {
useLocal: true,
allowServerFallback: true
}
}
```
## 📱 兼容性
- **微信版本**:要求微信7.0.0及以上版本
- **系统支持**:iOS 10.0+、Android 5.0+
- **功能权限**:需要摄像头、相册访问权限
## 🤝 贡献指南
欢迎提交Issue和Pull Request来帮助改进项目!
1. Fork 项目
2. 创建功能分支 (`git checkout -b feature/AmazingFeature`)
3. 提交更改 (`git commit -m 'Add some AmazingFeature'`)
4. 推送到分支 (`git push origin feature/AmazingFeature`)
5. 打开 Pull Request
## 📄 开源协议
本项目采用 MIT 协议开源 - 查看 [LICENSE](LICENSE) 文件了解详情。
## 👨💻 作者
- 如有疑问或建议,欢迎提交Issue
## 🙏 致谢
- 感谢微信小程序平台提供的开发框架
- 感谢开源社区提供的各种工具库和组件
- 感谢所有贡献者和用户的支持
---