gpt4 book ai didi

javascript - 初始化日期时间值同时避免代码重复的最佳实践

转载 作者:行者123 更新时间:2023-12-03 01:00:01 24 4
gpt4 key购买 nike

我有许多调度任务函数,它们依赖于项目中日期时间值的许多便利变量,例如想象 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。阿罗拉

最佳答案

实现此目的的一种方法是创建一个 util 模块,其中包含所有这些便捷方法,然后您可以导入所需的任何文件。

由于您的输出始终是日期,因此您可以使用一个接受字符串的 getDate 方法:

getDate('yesterday')
getDate('endOfToday')

这样,您想要执行的操作就很容易阅读,并且在该 utils 模块中,您可以简单地使用一个 switch 语句,该语句基于您返回正确的日期输出的字符串:

switch(dateString) {
case 'today':
return moment()
case 'yesterday':
return moment().subtract(1, 'days')
...
}

如果您不喜欢传递字符串(尽管moment经常这样做),您可以创建一个frozen class in ES6模拟 enumeration并通过/处理它。

您还可以创建一个包含这些内容的单例类并使用它...主要思想是有一种方法来返回日期...factory pattern .

关于javascript - 初始化日期时间值同时避免代码重复的最佳实践,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52670369/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com