Trae是一个轻量级的HTTP客户端库,类似于axios,但更小巧简洁。它可以帮助开发者更高效地处理HTTP请求,特别适合在微信小程序中使用。
由于微信小程序不支持npm直接安装,你需要手动将Trae添加到项目中:
trae.js
文件utils
目录中在需要使用HTTP请求的页面或组件中引入Trae:
// 在页面JS文件中
const trae = require('../../utils/trae.js');
// 发起GET请求
trae.get('https://api.example.com/data')
.then(response => {
console.log('响应数据:', response.data);
})
.catch(error => {
console.error('请求失败:', error);
});
// 发起POST请求
trae.post('https://api.example.com/users', {
name: '张三',
age: 25
})
.then(response => {
console.log('创建成功:', response.data);
});
为不同的API服务创建独立的Trae实例:
// utils/api.js
const trae = require('./trae.js');
const api = trae.create({
baseUrl: 'https://api.example.com',
headers: {'Content-Type': 'application/json'}
});
// 添加请求拦截器
api.before((request) => {
// 添加token到请求头
const token = wx.getStorageSync('token');
if (token) {
request.headers['Authorization'] = `Bearer ${token}`;
}
return request;
});
// 添加响应拦截器
api.after((response) => {
if (response.status === 401) {
// 处理未授权情况
wx.navigateTo({ url: '/pages/login/login' });
}
return response;
});
module.exports = api;
// pages/index/index.js
const api = require('../../utils/api.js');
Page({
onLoad() {
this.fetchData();
},
fetchData() {
api.get('/data')
.then(res => {
this.setData({ items: res.data });
})
.catch(err => {
wx.showToast({ title: '加载失败', icon: 'none' });
});
},
createUser() {
api.post('/users', { name: '李四', age: 30 })
.then(() => {
wx.showToast({ title: '创建成功' });
});
}
});
下面是一个使用Trae开发的完整微信小程序示例,展示用户列表并支持添加新用户:
<!-- pages/index/index.wxml -->
<view class="container">
<view class="header">
<text class="title">用户管理系统</text>
<button class="add-btn" bindtap="showAddModal">添加用户</button>
</view>
<view class="user-list">
<block wx:for="{{users}}" wx:key="id">
<view class="user-item">
<text class="user-name">{{item.name}}</text>
<text class="user-age">年龄: {{item.age}}</text>
</view>
</block>
<view wx:if="{{users.length === 0}}" class="empty">
暂无用户数据
</view>
</view>
<!-- 添加用户模态框 -->
<modal title="添加用户" visible="{{showModal}}" bindcancel="hideAddModal" bindconfirm="addUser">
<form>
<view class="form-item">
<text class="label">姓名</text>
<input class="input" value="{{newUser.name}}" bindinput="onNameInput" placeholder="请输入姓名" />
</view>
<view class="form-item">
<text class="label">年龄</text>
<input class="input" value="{{newUser.age}}" bindinput="onAgeInput" type="number" placeholder="请输入年龄" />
</view>
</form>
</modal>
</view>
/* pages/index/index.wxss */
.container {
padding: 20rpx;
}
.header {
display: flex;
justify-content: space-between;
align-items: center;
margin-bottom: 30rpx;
}
.title {
font-size: 40rpx;
font-weight: bold;
}
.add-btn {
background-color: #07c160;
color: white;
font-size: 28rpx;
padding: 10rpx 20rpx;
border-radius: 8rpx;
}
.user-list {
border-top: 1rpx solid #eee;
}
.user-item {
padding: 20rpx 0;
border-bottom: 1rpx solid #eee;
}
.user-name {
font-size: 32rpx;
display: block;
}
.user-age {
font-size: 28rpx;
color: #666;
}
.empty {
text-align: center;
padding: 40rpx;
color: #999;
}
.form-item {
margin-bottom: 20rpx;
display: flex;
align-items: center;
}
.label {
width: 100rpx;
}
.input {
border: 1rpx solid #ddd;
padding: 10rpx;
flex: 1;
border-radius: 8rpx;
}
// pages/index/index.js
const api = require('../../utils/api.js');
Page({
data: {
users: [],
showModal: false,
newUser: {
name: '',
age: ''
}
},
onLoad() {
this.loadUsers();
},
// 加载用户列表
loadUsers() {
wx.showLoading({ title: '加载中...' });
api.get('/users')
.then(res => {
this.setData({ users: res.data });
wx.hideLoading();
})
.catch(err => {
wx.hideLoading();
wx.showToast({ title: '加载失败', icon: 'none' });
});
},
// 显示添加用户模态框
showAddModal() {
this.setData({
showModal: true,
newUser: { name: '', age: '' }
});
},
// 隐藏添加用户模态框
hideAddModal() {
this.setData({ showModal: false });
},
// 处理姓名输入
onNameInput(e) {
this.setData({
'newUser.name': e.detail.value
});
},
// 处理年龄输入
onAgeInput(e) {
this.setData({
'newUser.age': e.detail.value
});
},
// 添加新用户
addUser() {
const { name, age } = this.data.newUser;
if (!name || !age) {
wx.showToast({ title: '请填写完整信息', icon: 'none' });
return;
}
wx.showLoading({ title: '添加中...' });
api.post('/users', { name, age: parseInt(age) })
.then(() => {
wx.hideLoading();
this.setData({ showModal: false });
this.loadUsers();
wx.showToast({ title: '添加成功' });
})
.catch(err => {
wx.hideLoading();
wx.showToast({ title: '添加失败', icon: 'none' });
});
}
});
trae.create({ timeout: 10000 })
通过以上指南,你可以高效地使用Trae开发微信小程序,构建稳定可靠的网络请求功能。
原网址: 访问
创建于: 2025-08-25 23:02:47
目录: default
标签: 无
未标明原创文章均为采集,版权归作者所有,转载无需和我联系,请注明原出处,南摩阿彌陀佛,知识,不只知道,要得到
最新评论