当前位置: 首页 > 后端技术 > Node.js

JS使用技巧2——momentjs是不是太重了?试试dayjs和miment

时间:2023-04-03 19:09:40 Node.js

关于时间的操作,我一直在用库momentjs。便捷智能,功能强大。唯一的缺点是包对于前端HTML来说太大了。我是momentjs的重度用户,但是moment的大小很折磨人。虽然方便高效,但动辄200K的大小对于首页的加载速度来说是一场灾难。因此,开源社区有一些精简的解决方案。比如dayjs和miment。dayjsdayjs本身是针对标准的momentjs开发的,参见作者官方介绍:Day.js是一个极简主义的JavaScript库,它为现代浏览器解析、验证、操作和显示日期和时间,具有很大程度上与Moment.js兼容的API。如果你使用Moment.js,你已经知道如何使用Day.js。它的用法非常简单。dayjs().startOf('month').add(1,'day').set('year',2018).format('YYYY-MM-DDHH:mm:ss');是不是momentjs很像?不,事实上它们是完全一样的。dayjs的API和moment几乎一样,所以如果要替换已有的momentjs代码,直接替换为dayjs即可。在大多数情况下,调用语句可以保持不变。dayjs的大小是多少?2KB。再想想momentjs的大小。mimentmiment也是一个最小时间处理库,压缩后的代码甚至达到1KB左右,比dayjs还小。对应包的大小,作者团队只保留了momentjs中的核心方法,但实际上这些方法在普通场景下已经足够用了。miment的用法和momentjs基本一样。例如:miment().add(1,'YYYY').add(2,'MM').add(-3,'DD')//加上1年和2个月并减去3天miment().isBetween('2000-01-01','2020-01-01')//truemiment().isBefore('2000-01-01')//falsemiment().format('YYYYMMDDDDww')//Week1,April09,2018*Sunday对应week0*如果想得到单独的年月日,更简单miment().format('YYYY')//2018miment().format('MM')//04miment().format('DD')//09miment().format('hh')//23miment().format('mm')//57miment().format('ss')//16miment().format('SSS')//063miment().format('ww')//1miment().format('WW')//结论对于momentjs,大部分开发者又爱又恨,或者觉得自己不爱了。其实对于大部分的时间操作场景,dayjs和miment更适合使用。尤其是非SSR场合,想想降低了近200KB的首屏渲染速度,真的很吸引人。