在我的项目中,有许多调度任务函数依赖于日期时间值的许多方便变量,例如想象10 +行如下:
let today = moment(),
yesterday = moment().subtract(1, 'days'),
startOfToday = moment(today).startOf("day"),
endOfToday = moment(today).endOf("day");我不能将这种初始化代码放在myCode.js文件的顶部,因为它会导致错误-- myCode.js中的函数将引用陈旧的日期时间。例如,今天总是指节点服务器启动的日期时间。
目前,我正在每个函数中初始化日期,但这会导致代码重复。
有更干净的方法吗?
我正在考虑的选择:
( a)创建一个函数,该函数初始化所有常用日期,并在函数顶部调用该日期。
( b)内联moment.js日期时间值,并完全消除方便变量(工作,但使代码更难阅读)。
小贴士很感激,
谢谢,
-S。阿罗拉
发布于 2018-10-05 17:56:09
要做到这一点,一种方法是创建一个util模块,其中包含所有这些方便的方法,然后您可以导入需要它们的任何文件。
由于输出总是日期,所以可以有一个接受字符串的getDate方法:
getDate('yesterday')
getDate('endOfToday')这样,您想要做的事情就很容易读了,在这个utils模块中,您可以简单地拥有一个开关语句,它基于字符串返回正确的日期输出:
switch(dateString) {
case 'today':
return moment()
case 'yesterday':
return moment().subtract(1, 'days')
...
}如果您不喜欢传递strings (尽管这是非常重要的时刻),您可以创建一个ES6中的冻结类来模拟枚举并传递/处理它。
您还可以创建一个有这些的单例类,并使用它.主要思想是有一个方法来返回日期. 工厂模式。
https://stackoverflow.com/questions/52670369
复制相似问题