1.主要使用原生的原理在vue中实现(自己拼接字符串)
这种写法,每秒都在更新这个字符串,但是实际上,每秒不是时分秒都在变化,所以实际上这种写法的性能不是很好,按需求,我们应该局部更新视图,所以我们可以按需,把时分秒做成一个组件,然后就变成按需渲染了
2.利用本地的时间表示方式(根据语言选择合适的显示方式)
注:什么是宏任务和微任务???
1.这里涉及的setInterval定时器,定时器任务是宏任务,因为是在不同的进程中进行的
2.就会有个问题,如果JS被阻塞了,JS后续的代码是不会被执行的,但是计时器会继续走
3.这样的话,每过1秒,定时器就会发出一个信号,要执行一下这个任务,这时候,因为JS的阻塞,其实信号接收也被阻塞了,或者说,即是收到了一堆任务,也无法立即执行
4.当时机切换到有剩余资源可以执行时,此时因为堆积了很多未执行的任务,所以会一下子把堆积的任务都执行掉,这就会造成一个可怕的结果,一瞬间造成大量的重绘
5.这里的重绘只有在原生和用setInterval的时候才会出现,为什么呢?
(1)
因为Vue的渲染设计的是微任务,大量堆积的任务执行时同步的,前面的定时器通知要执行这个动作是异步的,所以对于Vue来说,是不会造成大量的重绘的
(2)但是this.times仍然会一下子被设置很多次,设置多次也就意味着经历了多次的Vue的劫持,Vue内部的逻辑也会一下子经历多次
(3)这只是因为我在页面上