基于原生VUE的实时时间显示与更新
目前最为方便的就是day.js库。
但如果只使用原生vue设计并实现该功能,可以加深我们对VUE响应式更新的了解。 下面开始介绍思路:
实时显示一般由两大主要功能实现:实时获取与实时刷新。
在JS中我们能使用如下代码获取当前的日期对象
var date = new Date();
使用格式化函数进行日期的格式化显示
var getTime = function(date){ var year = date.getFullYear();//获取年 var month = date.getMonth()+1;//获取月,因JS中月从0开始,所以+1 var day = date.getDay();//获取日 var hour = date.getHours();//获取小时 var minutes = date.getMinutes();//获取分钟 var seconds = date.getSeconds();//获取秒 return year+年+month+月+day+日+hour+":"+minutes+":"+seconds;//组装字符串 }
循环执行本函数即可实时获取时间
在VUE中创建时间显示组件,代码如下
<template> <div> <span>当前时间:{ {time|parsetime}}</span>//用到了vue的filters钩子,对时间进行格式化 </div> </template>
在挂载时启动VUE定时器,用到了setInterval(function,time)函数,第一个参数为循环执行的函数,第二个参数为定时时长,单位毫秒。需要注意的是,启动的定时器需要在页面销毁时调用clearInterval销毁,代码如下
mounted(){ this.timer = setInterval(this.refreshTime,1000); },beforeDestroy(){ clearInterval(this.timer); }
利用vue的响应式属性,将时间定义在Data代码块中,由定时器触发时间更新,进而触发VUE响应视图更新,将时间刷新。完整代码如下
<template> <div> <span>当前时间:{ {time|parsetime}}</span> </div> </template> <script> var getTime = function(){ var date = new Date(); var year = date.getFullYear(); var month = date.getMonth(); var day = date.getDay(); var hour = date.getHours(); var minutes = date.getMinutes(); var seconds = date.getSeconds(); return year+年+month+月+day+日+hour+":"+minutes+":"+seconds; } export default { name:timeDisplay, data(){ return{ time: } }, filters:{ parsetime:getTime },methods:{ refreshTime(){ var newtime = getTime(); this.time = newtime; } } ,mounted(){ this.timer = setInterval(this.refreshTime,1000); },beforeDestroy(){ clearInterval(this.timer); } } </script> <style> </style>
最终效果如下,实现每秒更新。 如果对显示效果不满意,还改进格式化函数补0。代码实现如下
var addZero = function(value){ return value<10 ? 0+value:value; };
在组装月、日、时、分、秒字符串时,调用该函数补0,即可达成令人满意的显示效果。
虽然已经有使用起来方便快捷的dayjs代码库,但使用原生vue进行开发能让我们更好的掌握相关技术,在探究问题的过程中达到提升自己的目的。
上一篇:
通过多线程提高代码的执行效率例子