uniapp投票小程序
开发准备
确保已安装HBuilderX开发工具,这是uniapp官方推荐的IDE。在HBuilderX中新建一个uniapp项目,选择模板为“uni-app”或“uni-app(vue3)”,根据需求选择。
注册并获取微信小程序开发者账号,以便后续发布到微信平台。在小程序后台配置合法域名,确保接口请求不受限制。
页面结构设计
创建投票列表页(index.vue)和投票详情页(detail.vue)。列表页展示所有投票活动,详情页显示具体投票选项和提交功能。
使用uniapp的组件如<scroll-view>实现滚动列表,<swiper>实现轮播图展示热门投票。导航栏使用<uni-nav-bar>,底部选项卡用<uni-tab-bar>。
数据交互实现
通过uni.request调用后端API获取投票数据。示例代码:

uni.request({
url: 'https://api.example.com/votes',
method: 'GET',
success: (res) => {
this.voteList = res.data
}
})
提交投票时使用POST请求:
uni.request({
url: 'https://api.example.com/vote',
method: 'POST',
data: { voteId: 123, optionId: 456 },
success: (res) => {
uni.showToast({ title: '投票成功' })
}
})
状态管理
使用vuex管理全局状态,如用户登录信息和投票记录。创建store/modules/vote.js:
const state = {
votedItems: []
}
const mutations = {
ADD_VOTED_ITEM(state, item) {
state.votedItems.push(item)
}
}
用户认证
集成微信登录功能,通过uni.login获取code:

uni.login({
provider: 'weixin',
success: (res) => {
this.code = res.code
}
})
后端通过code换取openid,完成用户身份验证。敏感操作需校验用户权限。
本地缓存
利用uni.setStorageSync存储用户临时数据:
uni.setStorageSync('hasVoted', true)
读取时使用uni.getStorageSync检查是否已投票。
样式与布局
使用uniapp的rpx单位实现响应式布局。示例样式:
.vote-item {
padding: 20rpx;
margin-bottom: 30rpx;
border-radius: 12rpx;
box-shadow: 0 4rpx 12rpx rgba(0,0,0,0.1);
}
发布流程
在HBuilderX中选择“发行”->“小程序-微信”,生成生产环境代码。使用微信开发者工具导入生成的/dist/build/mp-weixin目录,提交审核前需完成小程序信息配置和域名校验。






