开启掘金成长之旅!这是我参与「掘金日新计划 · 2 月更文挑战」的第 17天,点击查看活动详情
上一次掘金的征文活动,准确来说,应该是去年的最后一次掘金官方的征文活动,我没有参加那一次征文活动。距离上一次征文,好像有两三个月了,感觉时间过得有点漫长了,都快要忘记掘金的征文活动了。
现在掘金推出了新的一年的征文活动-掘金日新计划 · 2 月更文挑战,又要开始新的一年,新的一轮的征文挑战了。
征文挑战已经开始了,而我即将要参与这次征文活动,参与挑战,挑战自己。
提升系列
提升系列,我主要是想写一些平时工作上面,自己会用到的一些好的技巧或者方法。当然,这些技巧和方法是针对我自己的。
除此之外,还可能会写一些解决难点的方法。比如,遇到了某个难点,要通过什么方法来解决它?
正如它的名字一样--提升,通过学习一些好的技巧、方法,或者解决一些难题、难点,来提升我们的能力。
出这个提升系列,一方面,是提升自己的开发能力;另一方面,也希望这个提升系列,可以帮助到部分人,提升他们的开发能力。
在这个系列里,我能想到的或者实现方法,不一定是最好的。欢迎大家参与讨论。
前言
在上一篇文章提升系列:20.获取格式化时间区间-4-4里,我们分析了dayjs源码里面的prettyUnit方法。
但是无论是在add方法里面,还是在prettyUnit方法里面,都有出现一个变量C。这个变量C是什么?
接下来,我们看一下变量C的定义。
dayjs
Day.js是一个极简的JavaScript库,可以为现代浏览器解析、验证、操作和显示日期和时间
这是dayjs官网上面的介绍,我们可以使用dayjs来进行日期、时间方面相关的操作。
查阅
我们到dayjs的仓库里面,把源码下载下来。下载解压后,我们在vscode里,把代码打开。
我们先找到prettyUnit方法
const prettyUnit = (u) => {
const special = {
M: C.M,
y: C.Y,
w: C.W,
d: C.D,
D: C.DATE,
h: C.H,
m: C.MIN,
s: C.S,
ms: C.MS,
Q: C.Q
}
return special[u] || String(u || '').toLowerCase().replace(/s$/, '')
}
在prettyUnit方法里面,我们点击变量C,进入它所在的文件里面
export const MS = 'millisecond'
export const S = 'second'
export const MIN = 'minute'
export const H = 'hour'
export const D = 'day'
export const W = 'week'
export const M = 'month'
export const Q = 'quarter'
export const Y = 'year'
export const DATE = 'date'
我们可以看到,在文件里面,定义了几个常量:
- MS:毫秒
- S:秒
- MIN:分
- H:小时
- D:天
- W:周
- M:月
- Q:季度
- Y:年
- DATE:日期
这些常量定义好之后,然后导出。
在add方法里面
add(number, units) {
...
if (unit === C.Y) {
return this.set(C.Y, this.$y + number)
}
if (unit === C.D) {
return instanceFactorySet(1)
}
...
}
这里判断unit === C.D,其实就是判断unit的值,是不是day。
我们看了变量C的定义文件,才知道前面分析代码时,遇到的C.M,C.Y,C.D它们的值是什么。
到这里,变量C的代码就分析完了。
小结
本篇文章总结:
本小节,主要是查看了变量C定义的值。它的代码比较简单,其实就是定义了一些常量,然后把它导出。这样做,其实是处于工程化考虑,把这些常量值都定义在一个文件里面,然后统一导出,方便管理和维护。
最后,放上自己比较喜欢的一句诗句:
千淘万漉虽辛苦,吹尽狂沙始到金 - 唐 刘禹锡《浪淘沙》