看到标题的大家确定以为我是一个很菜的人,确实大家的以为没有错,由于如今的我确实很菜。曾今一段时间我甚至以为我本身根本不可能会走上写代码的这个职业的,可能你们没有了解过我,在上大学以前,我就像农村的老人家同样根本不会去碰电脑这个东西。那到底是什么缘由让我决定走代码这条路呢?下面随着我像你们介绍我写的小程序来告诉你们,一个对电脑毫无兴趣的女孩子,到底是什么让她走上代码这条路了! css
作任何事情以前都不能急,尤为是写代码以前,当咱们在公司或者咱们想要写一个项目的时候,第一件事并非连忙打开代码编辑器,咱们应该先抖一会腿(就是看看写这个项目须要哪些东西)。写代码就比如咱们咱们作饭,在开火以前咱们就要先提早洗菜,切菜,这样才不会在饭作到一半的时候发现本身这个没洗,那个没切的状况。下面咱们就一块儿来看看写一个简单的微信小程序须要作哪些准备工做。html
说了这么多准备工做,下面咱们就一块儿来看看小程序的总体效果图(我不会录动态图下面这些动态图都是用手机录成视屏,最后转成GIF格式的)前端
下面我就一步一步来说述我如何实现这个简单的微信小程序的,以及在这其中我所遇到哪些问题解决的element-ui
功能描述:下面的tabBar主要是控制页面的跳转的,须要咱们在app.json里面配置的,这是其中的一个tabBar的配置json
"tabBar": {
"color": "#515151",
"background": "blue",
"list": [
{
"pagePath": "pages/time/time",
"text": "时间",
"iconPath": "/images/time.png",
"selectedIconPath": "/images/time1.png"
}
}
复制代码
功能描述:首页面涉及的逻辑思想的基本没有,他主要是给用户很好的体验,就是进入这个小程序就在告诉用户这个小程序的可以为何活动计时canvas
countTime: function () {
wx.navigateTo({
url: '../countTime/countTime'
})
},
click: function (e) {
console.log(e)
wx.navigateTo({
url: '../countTime/countTime'
})
复制代码
在这里页面跳转咱们要特别注意,并非全部的页面跳转均可以用wx.navigateTo。以前我在写微信小程序的时候我就犯过这样的所错误,下面我就给你们列举出来几种实现页面跳转小程序
<!-- sample.wxml -->
<view class="btn">
<navigator url="../time/time">跳转到新页面</navigator>
</view>
复制代码
navigateto_index: function (event) {
wx.redirectTo({
url: '../index/index',
success: function (res) {
// success
},
fail: function () {
// fail
},
complete: function () {
// complete
}
})
}
复制代码
wx.navigateBack({
delta: 1, // 回退前 delta(默认为1) 页面
success: function (res) {
},
fail: function () {
},
complete: function () {
}
})
复制代码
function countdown(that) {
var second = that.data.second
if (second == 0) {
that.setData({
second: "计时结束"
});
return;
}
function dateformat(second){
var min = Math.floor(second/60%60);
var sec = Math.floor(second % 60);
return min + ':' + sec;
}
var time = setTimeout(function(){
that.setData({
second: second - 1,
clock: dateformat(second - 1)
});
countdown(that);
}
,1000)
}
Page({
data: {
second: 3600
},
onLoad: function () {
countdown(this);
},
timeClose: function () {
wx.switchTab({
url: '../time/time'
})
},
timeBg: function () {
this.setData({
second:3600
})
}
});
复制代码
function formatTime(time, format) {
let temp = '0000000000' + time
let len = format.length
return temp.substr(-len)
}
module.exports = {
formatTime: formatTime
}
复制代码
说的封装,在怎样的状况下咱们须要封装呢,我本身总结了一下,那就是你这个功能不止一次会使用到,那就封装成组件,这样咱们就不会让代码更加的简洁,同时减小了本身的工做量,也显得更加专业。微信小程序
功能描述:这个页面主要是记录前面计时页面的状况,这个记录是经过本地存储函数wx.getStorageSync来实现,当计时页面点击startTime开始计时的时候本地就会获取一份数据。bash
getLogs: function(e) {
console.log(e)
let logs = wx.getStorageSync('logs')
logs.forEach(function(item, index, arry) {
item.startTime = new Date(item.startTime).toLocaleString()
})
this.setData({
logs: logs
})
},
复制代码
下面的清除功能是经过绑定一个清除事件来实现的微信
clearLog: function(e) {
wx.setStorageSync('logs', [])
this.switchModal()
this.setData({
toastHidden: false
})
this.getLogs()
}
复制代码
下面这段彩虹统计图是采用canvas来实现的,刚开始我没有想到使用canvas来实现,一开始我就是使用css来画圆来写的,可是那样出来的效果太死板了。
<canvas class="canvas" canvas-id="pieCanvas" disable-scroll="true" class="pieCanvas" style="width:300px; height:300px;">
</canvas>
复制代码
下面这个完成多个番茄数的获取是经过动态从数据源里获取的
<view class="footer">
<view class="footer-title">
<view class="header-title">最近一周完成</view>
<view class="header-date">平均天天{{logs.length}}个番茄</view>
<view class="header-dec">{{logs.length}}个番茄</view>
</view>
复制代码
下面的日历咱们能够采用bootstap或者element-ui来实现,这两种框架只用你引入他们的HTML,你就可使用很是的方便。
复制代码
这个页面比较简单,主要两个功能函数就能够实现
this.setData({
workTime: wx.getStorageSync('workTime'),
restTime: wx.getStorageSync('restTime')
})
},
changeWorkTime: function (e) {
wx.setStorage({
key: 'workTime',
data: e.detail.value
})
},
changeRestTime: function (e) {
wx.setStorage({
key: 'restTime',
data: e.detail.value
})
}
复制代码
在学习前端的道路上咱们最重要的就是坚持,由于在前端须要学习的东西很是多,因此咱们必须静下心来学习。我已经开始了前端的学习之旅了,让咱们一块儿来学习吧!但愿个人文章对你有帮助的话,能够给我一个赞哦!