微信小程序是一种基于微信平台开发的小型应用程序,在微信中通过搜索、扫描二维码等方式可以快速进入使用。本文将详细介绍如何使用微信小程序开发制作一个简易的倒计时应用。
本文主要分为以下几个部分:
-
环境准备:安装开发工具和创建小程序
-
页面设计:创建首页和设置页面
-
倒计时功能实现:倒计时的逻辑和页面展示
-
功能扩展:设置自定义倒计时时间
-
小程序发布:发布到微信平台
-
环境准备:
首先,我们需要安装微信开发者工具。微信开发者工具可以从微信官方网站上下载,下载地址为:https://developers.weixin.qq.com/miniprogram/dev/devtools/download.html
下载安装完成后,打开微信开发者工具,选择「添加项目」。输入项目名称、项目目录和AppID(可以先使用个人开发者模式进行开发),点击「确定」创建项目。
- 页面设计:
创建成功后,我们可以看到开发者工具中自动生成了一些初始文件,包括app.json、app.js、app.wxss等。
在pages目录下创建两个页面:index和setting。
index页面是倒计时的展示页面,setting页面是设置倒计时的页面。
在app.json文件中配置页面路径,修改如下:
{
"pages": [
"pages/index/index",
"pages/setting/setting"
],
"window": {
"navigationBarTitleText": "倒计时应用"
}
}
设置导航栏标题为“倒计时应用”。
- 倒计时功能实现:
在setting页面中,我们需要设置倒计时的时间。
首先,在setting.json中配置页面样式,设置页面标题和导航栏背景颜色:
{
"navigationBarTitleText": "设置",
"navigationBarBackgroundColor": "#000000"
}
然后,在setting.js中,定义变量time和countdown,分别保存用户设置的时间和当前倒计时的剩余时间,初始值均为0。
// setting.js
Page({
data: {
time: 0,
countdown: 0
},
})
设置页面视图,在setting.wxml中添加一个输入框和一个按钮,用于设置倒计时时间和开始倒计时:
<!-- setting.wxml -->
<view class="container">
<input class="input" type="number" placeholder="请输入倒计时时间" value="{{time}}" bindinput="handleInput" />
<button class="btn" bindtap="handleStart">开始倒计时</button>
</view>
样式设置,在setting.wxss中设置页面的样式:
/* setting.wxss */
.container {
display: flex;
flex-direction: column;
justify-content: center;
align-items: center;
height: 100vh;
background: #ffffff;
}
.input {
width: 300rpx;
height: 100rpx;
margin-bottom: 30rpx;
font-size: 32rpx;
border: 1rpx solid #cccccc;
border-radius: 8rpx;
padding: 10rpx 20rpx;
}
.btn {
width: 280rpx;
height: 80rpx;
background: #000000;
color: #ffffff;
font-size: 36rpx;
border-radius: 8rpx;
border: none;
}
接下来,实现倒计时功能。
在setting.js中,为输入框添加事件处理函数handleInput,用于获取用户输入的时间:
// setting.js
Page({
data: {
time: 0,
countdown: 0
},
handleInput: function(e) {
this.setData({
time: e.detail.value
})
},
})
在setting.js中,为按钮添加事件处理函数handleStart,用于开始倒计时:
// setting.js
Page({
data: {
time: 0,
countdown: 0
},
handleStart: function() {
var that = this;
var time = that.data.time;
if (time <= 0) {
wx.showToast({
title: '请输入正确的倒计时时间',
icon: 'none'
})
return;
}
that.setData({
countdown: time
})
var interval = setInterval(function() {
var countdown = that.data.countdown - 1;
if (countdown < 0) {
clearInterval(interval);
return;
}
that.setData({
countdown: countdown
})
}, 1000)
}
})
在setting.wxml中,绑定事件处理函数:
<!-- setting.wxml -->
<input class="input" type="number" placeholder="请输入倒计时时间" value="{{time}}" bindinput="handleInput" />
<button class="btn" bindtap="handleStart">开始倒计时</button>
在setting.wxss中,为按钮添加样式:
/* setting.wxss */
.btn {
width: 280rpx;
height: 80rpx;
background: #000000;
color: #ffffff;
font-size: 36rpx;
border-radius: 8rpx;
border: none;
}
接下来,我们将实现倒计时页面的内容。
在index.json中,配置页面样式,设置页面标题和导航栏背景颜色:
{
"navigationBarTitleText": "倒计时"
}
然后,在index.js中,定义变量currentTime,保存当前倒计时的剩余时间,初始值为0。
// index.js
Page({
data: {
currentTime: 0
},
})
设置页面视图,在index.wxml中添加一个显示当前倒计时的文本:
<!-- index.wxml -->
<view class="container">
<text class="text">{{currentTime}}</text>
</view>
样式设置,在index.wxss中设置页面的样式:
/* index.wxss */
.container {
display: flex;
justify-content: center;
align-items: center;
height: 100vh;
background: #ffffff;
}
.text {
font-size: 120rpx;
}
倒计时页面的内容已经完成,接下来实现倒计时的逻辑。
在index.js中,通过监听页面显示的生命周期函数onShow,判断是否有倒计时时间。
如果有倒计时时间,通过setTimeout方式实现倒计时功能,每秒钟减少1秒,直到倒计时时间为0。
// index.js
Page({
data: {
currentTime: 0
},
onShow: function() {
var that = this;
var pages = getCurrentPages();
var currentPage = pages[pages.length - 1];
if (currentPage.options.time) {
var time = parseInt(currentPage.options.time);
that.setData({
currentTime: time
})
var interval = setInterval(function() {
var currentTime = that.data.currentTime - 1;
if (currentTime < 0) {
clearInterval(interval);
return;
}
that.setData({
currentTime: currentTime
})
}, 1000)
}
}
})
- 功能扩展:
如果用户希望能够自定义倒计时时间,我们可以通过在setting页面添加输入框,让用户自行输入倒计时时间。
在setting.wxml中,添加一个新的输入框:
<!-- setting.wxml -->
<input class="input" type="number" placeholder="请输入倒计时时间" value="{{time}}" bindinput="handleInput" />
<input class="input" type="number" placeholder="请输入自定义倒计时时间" value="{{customTime}}" bindinput="handleCustomInput" />
<button class="btn" bindtap="handleStart">开始倒计时</button>
在setting.js中,定义变量customTime,保存用户输入的自定义倒计时时间:
// setting.js
Page({
data: {
time: 0,
countdown: 0,
customTime: 0
},
handleInput: function(e) {
this.setData({
time: e.detail.value
})
},
handleCustomInput: function(e) {
this.setData({
customTime: e.detail.value
})
},
handleStart: function() {
var that =