从Moment迁移到Dayjs,优化您的前端应用程序
并且存储库指出它具有以下功能
→熟悉moment.js API
→可链接且不可变
→本地化即i18n(国际化)支持
因此,我们开始了迁移,我们意识到每次使用day时都必须删除以下内容:从“ dayjs”导入dayjs;
导入'dayjs / locale / de';
dayjs.locale('de');这似乎可行,尽管需要为创建的每个dayjs实例完成。我们继续进行,但是dayjs存在两个不同的问题:→无法用格式初始化
→每次导入模块时都必须进行语言环境分配使用FormatInitialization为此,dayjs提供了一个名为AdvancedFormat的插件,该插件扩展了dayjs的功能,类似于moment.js从“ dayjs / plugin / advancedFormat”导入AdvancedFormat;
dayjs.extend(AdvancedFormat);尽管我们又处在同一圈,每次必须导入和附加插件。发生这种情况的主要原因是节点模块在单独的范围内执行并公开了仅导出。从本质上讲,dayjs几乎是不可变的并且可树化,并且其实例不会改变其他实例的行为。每次都准备使用dayjs为了解决此问题,我们采取了以下方法:从'dayjs'导入dayjs;
导入'dayjs / locale / de';
从“ dayjs / plugin / advancedFormat”导入AdvancedFormat;
dayjs.locale('de');
dayjs.extend(AdvancedFormat);
导出默认的dayjs;现在将其另存为services / dayjs;我们制作了自己的dayjs服务,该服务已经进行了本地化和修补,可以进行高级格式初始化。现在,代替使用它,而不是从'dayjs'中导入import dayjs;我们这样做:从'services / dayjs'中导入dayjs;
请注意,为了使上述导入正常进行,我们在Web Pack配置中添加了别名,如下所示:
别名:{
服务:“ src / javascript / services”,
},
结论Moment.js是一个很棒的库,它有助于使使用日期进行开发变得更容易,尽管现在是分开的时候了。你们在JavaScript中使用什么进行日期对象操作?与我们分享您的经验。通过评测?或在Twitter上@patel_pankaj_和@ time2hack告诉我您对本文的看法,如果您认为本文有帮助,请与他人分享。订阅新帖子的邮件列表,下次再见。
- 由flaticon.com的平面图标制作的图标
- Curtis MacNewton在Unsplash上的照片
最初于2019年11月13日发布在https://time2hack.com。