编程开源技术交流,分享技术与知识

网站首页 > 开源技术 正文

觉得momentJS太笨重,来试试这个库吧

wxchong 2024-10-16 16:46:41 开源技术 14 ℃ 0 评论

moment.js开发时是大家处理日期对象的利器。大量的api,简便时区和国际化支持。

而现在他的作者都觉得他太大了,不建议在新项目中使用它。



让我们来看看为什么?

1.太大了200多k的体积,即便在压缩之后还有60多k的大小。对于追求首屏加载的网页来说太慢了。

2.处理速度太慢了,格式化时间用时长。由于moment为了兼容老版本的浏览器,比如IE8(我呸),未能使用最新的api,处理速度慢也是理所应当。

3.可变的。多人共同开发的时候,极易出错。

const one = new moment();
const two = one.add(1, 'days')

console.log(one); //Wed Sep 16 2020 17:31:28 GMT+0800
console.log(two); //Wed Sep 16 2020 17:31:28 GMT+0800

4.很难调试。这里大家还可以试试其他的,我记得只有"",NaN,null时momentcai'才会返回undefined。

moment(undefined) //Tue Sep 15 2020 17:33:00 GMT+0800

这一旦后端没返回,莫名奇妙的错误能让你查很久。

所以来看看这个库吧,date-fns(https://github.com/date-fns/date-fns#readme)。


  • 现代的: 可以在webpack, Browserify, or Rollup中使用,也tree-shaking(用到什么打包什么).
  • 原生时期对象: 使用原生对象,类型安全。
  • 纯函数和不可变:使用函数式编程,总是返回一个日期对象。
  • TypeScript & Flow:支持ts和flow.js
  • 轻量的: 大小只有20几k,而这还没有tree-shaking
  • I18n: 国际化

大家有没有对这个包开始感兴趣了。



不过以下几种情况的话,大家还是老老实实用回moment

  1. 你在维护老项目
  2. 你需要适配IE8及其以下浏览器
  3. 使用的组件库中日期组件等是基于moment设计的
  4. 你开的应用是极其复杂的时间的应用,为了更好的依赖支持,还是建议你使用moment。

当然反过来说,如果你追求极致的轻量,还可以试试day.js,只有3Kb。对SEO和加载会非常有帮助。

关注我给大家带来更多前端有趣的知识。[呲牙]

#前端##moment##程序员##JavaScript#

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表