# Moment 进入维护状态

# Moment.js 进入维护状态意味着:

  • 不会再添加新功能;
  • 不会将 API 更改为 immutable;
  • 不会解决 Tree-shaking 或包体积的问题;
  • 不会对其进行任何重大更改
  • 可能选择不修复 bug,特别是长期存在的已知 bug

Moment 官方表示,不鼓励开发者在以后的新项目中使用它,但他们考虑到现有项目仍在使用 Moment.js,当遇到以下情况时,Moment 团队会进行处理:

  • 当出现严重的安全问题时,团队会给予解决;
  • 在 IANA 时区数据库更新后,团队回味 Moment-Timezone 发布更新

# 仍需使用的 changing

Moment 官方列举了需要继续使用 Moment.js 的场景:

# 浏览器的支持

Moment 能在 IE8 下完美运行。相比之下,Luxon只能在 IE10 及更高版本上运行,并且需要使用 polyfill 进行操作。如果存在一定要支持旧版本浏览器的情况,则可以使用 Moment.js。但是 Day.js 也可以在 IE8 及更高版本运行,开发者可以尝试使用 Day.js

# 其他库的依赖

有些库,尤其是日期选择器和图形库,很多都将 Moment.js 作为依赖项,如果正在使用这样的组件而找不到替代组件,开发者可以在整个项目中继续使用 Moment.js,而不用再引用另外一个库。

# 替代方案

如果开发者不在上述情况当中,Moment 团队也给出了一些替代方案

# 1、不使用库

一些简单的时间处理需求,可以使用 JavaScript 自带的 Date 和 Intl。Intl 对象可以展示不同时区不同语言的日期格式,同时 Intl 在多数浏览器上都已经有了很好的支持

# 2、Temporal

Temporal 被看作是未来内置的时间日期方案。它是 javaScript 与语言内置的时间和日期 API。现阶段可通过试验性的 polyfil 来尝试。Moment.js 团队表示,希望未来能够完全不需要 JavaScript 的日期和时间库,而是使用语言本身的额功能。

# 3、其他替代库

除了 Temporal 之外,官方还推荐了 Luxon、Day.js、js-Joda 和 date-fns 等设计更优秀的时间日期库。自重 Day.js 凭借着拥有与 Moment.js 几乎相同的 API 而深受广大开发者的喜爱