首先为什么要选择使用 momentJS(时间大师)?
MomentJS 是最受欢迎和最古老的与日期相关的库之一。 它之所以最受欢迎,是因为它为日期和时间格式化和操作和多平台兼容性提供了丰富而简单的 API,如果有人需要日期/时间格式化或操作, momentJS 会首先出现。
也许这就是为什么每个人一开始都喜欢 momentJS 的原因之一,即使在我的公司,同事们也喜欢 momentJS ,因为没有其他选择,也因为存在如此甜蜜的API,即使存在其他库,可能没有 momentJS 那么受欢迎。 所以除了 momentJS 之外没有人愿意接纳其他库进行改造的事情。
那为什么不应该使用momentJS呢?
我正在使用VSCode Import Cost扩展来检查每个库的导入成本,它显示 61 KB,这是我现在使用的较大较昂贵的库。
那么问题来了,值得吗?我付出了超过 60 kB 的工作量吗?就像一些应用程序只需要格式化日期,而一些应用程序显示相对于当前时间的时间,比如显示一些事件的时间,是明天,今天还是过去。有些情况下还可能涉及时区,这本身就是一件令人头疼的事情。答案取决于应用程序,并且大多数情况下我们格式化日期,并且我们不经常进行日期操作。
所以对于这些工作来说,大于 60 kB 并不是什么好交易,尤其是当你的应用程序对 SEO 要求很高时,每个人(我也是)都想更快地加载应用程序,并且在优化包大小的同时我的应用程序,60+ kB 引起了我的注意。这势必要替换解决。
DayJS是否该选?
文件大小只有2KB左右,下载、解析和执行的JavaScript更少,为代码留下更多的时间。并具有很大程度上与 MomentJS 兼容的 API。如果您使用 MomentJS,那么您已经知道如何使用 Day.js。
DayJS 我选择的不仅是它的大小,还有类似于 MomentJS 的 API。
- 安装成本:DayJS 的导入成本显示为 2.2K ,momentJS 显示为 60.6K 。
- 性能:现在,我将展示我为 MomentJS 和 DayJS 测试格式函数的结果。我在我的 xxx 项目中安装了 MomentJS 和 DayJS(完成了大小比较)。我在App.js函数中编写了以下代码块
function xxx(()=> {
// 控制台时间('1');
console.time('1');
moment().format('DD-MM-YYYY');
console.timeEnd('1');
// 控制台时间('2');
console.time('2');
DayJS().format('DD-MM-YYYY');
console.timeEnd('2');
}, []);
// 1:2.2763671875ms
// 2:1.260986328125ms
因此可以清楚地看到,DayJS 花费了 MomentJS 大约一半的时间来完成相同的功能。
结论
DayJS 是轻量级的替代品
或者说还没有被完全替换, MomentJS 提供了很多其他的时区之类的东西,DayJS 还不支持。
DayJS 是一个很好地替换了 MomentJS 用于基本日期转换,显示、格式化等。所以这一切都取决于你的要求。