Day.js替代Moment.js

在这里插入图片描述

Moment.js

Moment.js 是一个大而全的 JS 时间库,极大方便了我们在 JavaScript 中计算时间和日期。现在的眼光来看 Moment.js 并非完美无缺,从官方上总结了两大问题:

  1. 可变对象
    Moment 对象是可变对象(mutable),简单点说,任何时间上的加减等计算都改变了其本身。这种设计让代码变的十分不可控,而且很容易带来各种隐蔽且难以调试的 bug。以至于我们在每步修改之前,都要先调用 .clone 克隆一次才能放心操作。

  2. 包体积过大
    因为 Momnet.js 将全部的功能和所有支持的语言都打到一个包里,包的大小也是到了 280.9 kB 这样一个夸张的数字。简单点说,我们可能只需要一个 .format 格式化时间的方法,用户就需要加载数百 kB 的库,这是十分不划算的。

  • 最大缺点

moment.js官方宣布停止开发,进入维护状态,并建议使用其他时间库。
表示该日期库将不再添加新功能,不进行任何重大更改,不修复长期存在的已知问题,不解决捆绑包大小的问题。

  • 如果能有一个和 Moment.js 一样语法,一样功能,又轻量的库该多好!

Day.js

Day.js 是一个轻量的 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样. 如果你曾经用过 Moment.js, 那么你已经知道如何使用 Day.js,它有以下优点:

  • 🕒 和 Moment.js 相同的 API 和用法
  • 📦 仅 2kB 大小的微型库
  • 💪 不可变数据 (Immutable)
  • 🔥 支持链式操作 (Chainable)
  • 🌐 I18n 国际化
  • 👫 支持全球时区转换

从moment迁移至dayjs:
v1.6.0 支持多语言国际化了,按需加载需要的语言,那想缩小打包体积,提升开发体验只需要 replace(/moment/g, ‘dayjs’) 全局替换一下。就能从 Moment.js 大体积减小成 dayjs 2kb的体积,所有的API调用都保持不变,无需修改。


总结

  • 建议新项目直接使用day.js日期库。
  • 旧项目根据实际情况考虑是否替换为新的日期库。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值