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

时间:2018-10-05 17:06:47

标签: javascript momentjs

我有很多调度任务功能,这些功能依赖于项目中日期时间值的众多便利变量,例如想象像这样的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。阿罗拉

1 个答案:

答案 0 :(得分:1)

执行此操作的一种方法是使用所有这些便捷方法创建一个classpath 'com.android.tools.build:gradle:3.2.0' 模块,然后您就可以导入所需的任何文件。

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

getDate

通过这种方式,您可以很容易地理解所要执行的操作,在该utils模块中,您可以简单地拥有一个switch语句,该语句根据字符串返回正确的日期输出:

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

如果您不喜欢传递switch(dateString) { case 'today': return moment() case 'yesterday': return moment().subtract(1, 'days') ... } (尽管这样做不多),则可以创建一个frozen class in ES6来模拟enumeration并通过它来进行工作。

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