docs: 更新 README 文档,添加自定义 TabBar 组件的使用说明和配置细节

This commit is contained in:
熊熊熊子路
2026-01-14 15:58:21 +08:00
parent 0bb60ea59a
commit ad7948f37a
+106 -2
View File
@@ -18,6 +18,7 @@
- 基于 axios-miniprogram 的网络请求封装,支持自动 Token 注入、统一错误处理、智能加载动画管理
- AES-256 加密解密工具,支持标准 Base64 和 URL Safe Base64 两种格式
- 集成 TDesign 组件库,提供丰富的 UI 组件
- 自定义 TabBar 实现,基于 TDesign 组件,支持自动状态同步和页面切换
- 完善的代码规范配置,支持 ESLint 和 Prettier 自动格式化
- 请求拦截器和响应拦截器,统一处理认证、错误和加载状态
- 文件上传功能封装,支持上传进度回调
@@ -65,16 +66,25 @@
## 项目结构
```
my-weapp-template2/
ts-weapp-template/
├── miniprogram/ # 小程序源码目录
│ ├── api/ # API 接口定义
│ │ ├── login.ts # 登录接口示例
│ │ └── types.ts # 类型定义
│ ├── components/ # 自定义组件目录
│ ├── custom-tab-bar/ # 自定义 TabBar 组件
│ │ ├── index.ts # TabBar 组件逻辑
│ │ ├── index.wxml # TabBar 模板
│ │ ├── index.json # TabBar 配置
│ │ └── index.scss # TabBar 样式
│ ├── pages/ # 页面目录
│ │ ├── index/ # 首页
│ │ ├── login/ # 登录页
│ │ ── date/ # 日期页
│ │ ── date/ # 日期页
│ │ ├── one/ # TabBar 页面一
│ │ ├── two/ # TabBar 页面二
│ │ ├── three/ # TabBar 页面三
│ │ └── four/ # TabBar 页面四
│ ├── utils/ # 工具函数
│ │ ├── request.ts # 网络请求封装
│ │ ├── aes.ts # AES 加密解密工具
@@ -219,6 +229,92 @@ const strDate = formatDateTime('2024-01-15', 'YYYY年MM月DD日')
- `A`: 上午/下午
- `a`: 上午/下午(小写)
### 自定义 TabBar
项目提供了基于 TDesign 组件的自定义 TabBar 实现,位于 `miniprogram/custom-tab-bar/` 目录。
**主要特性:**
- 基于 TDesign 的 `t-tab-bar` 和 `t-tab-bar-item` 组件,样式统一美观
- 自动状态同步,根据当前页面路由自动更新激活状态
- 支持页面切换,点击 TabBar 项自动跳转到对应页面
- 完整的 TypeScript 类型支持
- 易于扩展和自定义
**配置说明:**
1. **在 `app.json` 中启用自定义 TabBar**
```json
{
"tabBar": {
"custom": true,
"color": "#000000",
"selectedColor": "#000000",
"backgroundColor": "#000000",
"list": [
{
"pagePath": "pages/one/index",
"text": "页面一"
},
{
"pagePath": "pages/two/index",
"text": "页面二"
},
{
"pagePath": "pages/three/index",
"text": "页面三"
},
{
"pagePath": "pages/four/index",
"text": "页面四"
}
]
}
}
```
2. **TabBar 组件配置:**
在 `miniprogram/custom-tab-bar/index.ts` 中配置 TabBar 项:
```typescript
data: {
value: 'label_1',
list: [
{ value: 'label_1', label: '首页', icon: 'home', pagePath: '/pages/one/index' },
{ value: 'label_2', label: '应用', icon: 'app', pagePath: '/pages/two/index' },
{ value: 'label_3', label: '聊天', icon: 'chat', pagePath: '/pages/three/index' },
{ value: 'label_4', label: '我的', icon: 'user', pagePath: '/pages/four/index' },
],
}
```
**在 TabBar 页面中使用:**
每个 TabBar 页面需要在 `onShow` 生命周期中调用 `init()` 方法来同步 TabBar 状态:
```typescript
Page({
onShow() {
// 同步 TabBar 激活状态
this.getTabBar().init()
},
})
```
**自定义 TabBar 项:**
如需添加或修改 TabBar 项,请按以下步骤操作:
1. 在 `miniprogram/custom-tab-bar/index.ts` 的 `data.list` 数组中添加或修改配置项
2. 在 `miniprogram/app.json` 的 `tabBar.list` 数组中同步更新配置
3. 确保对应的页面已创建并在 `app.json` 的 `pages` 数组中注册
**支持的图标类型:**
TDesign TabBar 组件支持多种内置图标,常用的有:`home`、`app`、`chat`、`user`、`setting` 等。更多图标类型请参考 [TDesign 图标文档](https://tdesign.tencent.com/miniprogram/components/tab-bar)。
## 开发指南
### 代码规范
@@ -245,6 +341,12 @@ npm run format:check
2. 创建页面文件:`index.ts`、`index.wxml`、`index.scss`、`index.json`
3. 在 `miniprogram/app.json` 的 `pages` 数组中添加页面路径
**注意:** 如果新页面是 TabBar 页面,还需要:
- 在 `app.json` 的 `tabBar.list` 数组中添加配置
- 在 `miniprogram/custom-tab-bar/index.ts` 的 `data.list` 数组中添加配置
- 在页面的 `onShow` 生命周期中调用 `this.getTabBar().init()` 同步状态
### 添加新 API
1. 在 `miniprogram/api/` 目录下创建或编辑对应的 API 文件
@@ -295,6 +397,8 @@ export const getUserInfo = (id: number) => {
4. **请求白名单**: 不需要认证的接口需要在 `request.ts` 的 `requestWhiteList` 数组中配置
5. **加密密钥**: 默认的 AES 密钥和 IV 仅用于开发测试,生产环境请务必修改
6. **npm 构建**: 修改 `package.json` 中的依赖后,需要在微信开发者工具中重新构建 npm
7. **自定义 TabBar**: TabBar 页面必须在 `onShow` 生命周期中调用 `this.getTabBar().init()` 来同步 TabBar 状态,否则可能出现状态不同步的问题
8. **TabBar 配置一致性**: 确保 `app.json` 的 `tabBar.list` 和 `custom-tab-bar/index.ts` 的 `data.list` 配置保持一致,包括页面路径和顺序
## 许可证