范文健康探索娱乐情感热点
投稿投诉
热点动态
科技财经
情感日志
励志美文
娱乐时尚
游戏搞笑
探索旅游
历史星座
健康养生
美丽育儿
范文作文
教案论文
国学影视

Moment。js停止更新!Day。js才是王者!

  大家好,很高兴又见面了,我是" 高级前端‬进阶 ‬",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
  高级前端‬进阶前言
  近年来,前端开发人员开始寻找 Moment.js的替代品,Moment.js 是最著名、最常用的 JavaScript 库之一。Moment.js尽管功能丰富,但存在几个严重影响应用程序性能的问题。 今天要介绍的主角是Day.js,它在 GitHub 上的star 已经超过了 date-fns(其中Day.js是42.2k,而date-fns是30.9k),值得一窥究竟。
  Moment.js vs. Day.js1.Moment.js1.1 什么是Moment.js
  在介绍Day.js之前,先了解下Moment.js。Moment.js 是一个开源时间、日期 JavaScript 库。 它用于高效的处理、解析、验证和显示时间数据。 Moment.js 的一大优点是它可以在浏览器和 Node.js两种环境中运行,而且支持几乎所有的标准日期格式、标准时区、相对时间和区域设置。
  Moment.js 是一个开源时间和日期的 JavaScript 库
  Moment.js的最大特点是:解析:可用于字符串、对象或数组解析验证:可通过 isValid() 检查日期是否有效。操作:Moment.js 提供了多种数据方法操作日期。例如: startoftime 和 endoftime、subtract、add、local 等。显示:可以根据需要以不同格式显示日期。国际化:日期和时间根据区域设置显示。自定义:可以自定义创建的语言环境1.2 Moment.js 的优点和缺点
  Moment.js 的优点和缺点Moment.js 优点丰富、简单的API多平台兼容性高级日期/时间格式显示本地化日期Moment.js 缺点不支持tree-shaking:导致巨大的包大小并导致性能问题文件大小比较重:最小为 67.9Kb。存在可变性问题并导致错误。具有复杂的 OOP API(参考文末资料)。2.Day.js2.1 什么是Day.js?
  什么是Day.js?
  Day.js 是 Moment.js 的压缩版,Day.js声称拥有与 Moment.js 相同的 API,并将其文件大小减少了 97%。 Moment.js 完整压缩后文件的大小为 67,9Kb,而 Day.js 压缩后文件只有 2Kb。 同时,Day.js也支持国际化、插件等Moment.js的几乎所有功能。2.2 Day.js vs. Moment.js?
  下图从文件大小 (gzip)、Tree-shaking、流行度、方法丰富性、模式(Pattern)、时区支持和语言环境等全方面比较 Moment.js 和 Day.js。
  同时,从NPM的周下载数据来看,虽然Moment.js(22457954)周下载量仍然高于Day.js(12679197),但是Moment.js已经有明显的下降趋势,而Day.js则稳步上升。所以,有理由相信,随着大多数开发者转向Day.js,Day.js超越Moment.js只是时间问题。
  周下载量Day.js vs. Moment.js?3.Day.js和Moment.js使用对比字符串+日期格式
  在 String + Date 格式中,它返回使用给定格式字符串解析的日期对象。 // Moment.js代码 moment("10-06-1996", "MM-DD-YYYY"); // 输出 => "1995-12-24T13:00:00.000Z" // dayjs代码 dayjs("10-06-1996"); // 输出 => "1996-10-06T13:00:00.000Z"字符串+时间格式
  返回使用给定格式字符串从日期字符串解析的日期。对于 String + Time 格式,day.js 需要 customParseFormat 插件。 // Moment.js使用 moment("2019-10-06 4:30", "YYYY-MM-DD HH:mm"); // 输出 => "2019-10-06T17:30:00.000Z" // dayjs 需要安装customParseFormat插件 dayjs("2019-10-06 4:30", "YYYY-MM-DD HH:mm"); // 输出 => "2019-10-06T17:30:00.000Z"
  当在 dayjs 中使用 customParseFormat 插件时,应该在代码顶部添加以下代码片段。 import customParseFormat from "dayjs/plugin/customParseFormat"; dayjs.extend(customParseFormat); // 插件安装字符串 + 格式 + 语言环境
  在 String + Format + locale 格式中,它返回使用给定格式字符串、语言环境解析的日期。 // Moment.js使用 moment("2019 mars", "YYYY MMM", "fr"); // =>输出 "2019-02-29T13:00:00.000Z" // dayjs需要customParseFormat插件 dayjs("2019 mars", "YYYY MMM", "fr"); // =>输出 "2019-02-29T13:00:00.000Z"
  当在 dayjs 中使用 customParseFormat 插件时,应该在代码顶部添加以下代码片段。 import customParseFormat from "dayjs/plugin/customParseFormat"; import "dayjs/locale/fr"; // 插件安装 dayjs.extend(customParseFormat);获取毫秒/秒/分/小时
  使用以下这些函数来获取给定日期的毫秒/秒/分钟/小时。 // Moment.js使用 moment().seconds(); //输出 => 58 moment().hours(); // 输出 => 18 // dayjs dayjs().second(); // 输出 => 58 dayjs().hour(); // 输出 => 18
  在上述方法的性能测试中,Moment.js耗时1500.703ms,dayjs仅耗时494.234ms。 使用以下函数来设置给定日期的毫秒/秒/分钟/小时。 // Moment.js moment().seconds(30); // 输出 => "2019-10-06T09:12:30.695Z" moment().hours(13); // 输出 => "2019-10-06T03:12:49.695Z" // dayjs dayjs().set("second", 30); // 输出 => "2019-10-06T09:12:30.695Z" dayjs().set("hour", 13); // 输出 => "2019-10-06T03:12:49.695Z"
  上述方法的性能测试中,Moment.js耗时1689.744ms,day.js耗时2037.603ms。给定日期的最大值和最小值
  在库的第一行下方返回给定日期的最大值,库的第二行返回给定日期的最小值。 const array = [   new Date(1996, 10, 06),   new Date(1994, 6, 18),   new Date(1993, 5, 25),   new Date(1959, 10, 4), ]; // Moment.js moment.max(array.map(a => moment(a))); // 输出 => "1996-11-06T13:00:00.000Z" moment.min(array.map(a => moment(a))); // 输出 => "1959-11-04T13:00:00.000Z" // dayjs 需要 minMax 插件 dayjs.max(array.map(a => dayjs(a))); // 输出 => "1996-11-06T13:00:00.000Z" dayjs.min(array.map(a => dayjs(a))); // 输出 => "1959-11-04T13:00:00.000Z"
  当在 dayjs 中使用 minMax 插件时,应该在代码顶部添加下面的代码片段。 import minMax from "dayjs/plugin/minMax"; // 插件 dayjs.extend(minMax);加减时间操作
  下面写的第一行用于将指定的天数添加到给定的日期,第二行用于从给定的日期减去指定的天数。 // Moment.js moment().add(7, "days"); // 输出 => "2019-10-13T09:12:49.695Z" moment().subtract(7, "days"); // 输出 => "2019-09-29T09:12:49.695Z" // dayjs dayjs().add(7, "day"); // 输出 => "2019-10-13T09:12:49.695Z" dayjs().subtract(7, "day"); // 输出 => "2019-09-29T09:12:49.695Z"
  在add方法的性能测试中,Moment.js耗时1309.485ms,dayjs耗时1911.881ms。在减法的性能测试中,Moment.js 耗时 1278.384ms,dayjs 耗时 1772.593ms。 时间差
  使用以下这些函数来获取给定日期之间的时间单位。 // Moment.js moment([2019, 10, 04]).diff(moment([2019, 10, 06])); // 输出 => -172800000 moment([2019, 10, 04]).diff(moment([2019, 10, 06]), "days"); // 输出 => -2 // dayjs dayjs("2019-10-04").diff(dayjs("2019-10-06"), "milliseconds"); // 输出 => -172800000 dayjs("2019-10-04").diff(dayjs("2019-10-06"), "days"); // 输出 => -2isBefore
  使用以下这些函数来检查日期是否早于另一个日期。 // Moment.js moment(‘2019–10–04’).isBefore(‘2019–10–06’); // 输出 => true // dayjs dayjs(‘2019–10–04’).isBefore(‘2019–10–06’); // 输出 => trueisAfter// Moment.js moment(‘2019–10–06’).isAfter(‘2019–10–04’); // 输出 => true // dayjs dayjs(‘2019–10–06’).isAfter(‘2019–10–04’); // 输出 => true3.本文总结
  Moment.js 和 Day.js 在功能上是等效的,但是在性能上,Day.js 比 Moment.js 更好。 可以说 Day.js 是一个缩小版的 Moment.js。随着Moment.js官方宣布停止更新新特性,也不会就已有问题进行修复,大家都应该寻找其他的日期处理工具,比如Day.js,又或者是Date-fns等。文末的参考资料提供了大量优秀文档以供学习,如果有兴趣的读者可以自行阅读。参考资料
  https://www.npmjs.com/package/dayjs
  https://github.com/date-fns/date-fns
  https://ch-k.medium.com/replace-moment-js-with-day-js-74e54a545f96
  https://github.com/moment/moment/blob/develop/src/test/moment/add_subtract.js#L244-L286

人民日报经典名句261。慢的哲学,教会我们细嗅生活的蔷薇,寻觅诗意的人生,快的哲学,教会我们力争征途的上游,掌握生活的主动。2。岁月顺流而下,生活逆水行舟,唯有快慢结合,一张一弛,才能破妄求实,于更高皇马在本赛季首场国家德比中以31击败巴萨,复盘比赛过程本月,西甲联赛正在如火如荼的进行着,相信球迷们也是十分关注了。而这次的比赛也可以说是看点十足。这不,就在10月16号,皇马又以31的战绩轻松击败了巴萨。上周日,本泽马巴尔韦德和罗德淡淡的清甜,足以衬托万物的滋味我是一个馒头,通体洁白,松软诱人光洁的面皮下藏着无数空洞那是生猛在高热里不断膨胀的热望让人想起炽热的金黄色麦浪,头顶上的烈日阳光想起从一粒粒小麦到馒头生命是如何渐渐变得柔软。苗在上一线代表讨论二十大报告畅谈新使命撸起袖子加油干风雨无阻向前行原标题撸起袖子加油干风雨无阻向前行(主题)一线代表讨论二十大报告畅谈新使命(副题)宋学文报告温暖人心我们更有干劲宋学文京东集团京东物流北京鼎好营业部负责人作为一名基层快递员,能在人二十大新华时评撸起袖子加油干风雨无阻向前行新华社北京10月18日电题撸起袖子加油干风雨无阻向前行新华社记者任沁沁新时代的伟大成就是党和人民一道拼出来干出来奋斗出来的!在16日党的二十大开幕会上,习近平总书记铿锵有力的话语,最遗憾的高级神仙文案1。他走了之后,家里好多东西都很伤心每天晚上我都要安慰他们,才能睡觉。2。我一直想知道,你有没有一支烟是为我抽的。3。你说你不懂爱,于是我成为你不懂爱的牺牲品。4。有些人莫名其妙地积累优美句子第一天努力不负青春的句子1。好好努力,你不为了任何人活下去,为了自己的未来,拼了吧,我们的青春经得起我们的磨练,我们的青春可以绽放出耀眼的火焰,请别让这信念停的太早,用尽我们能做到的一切充满人间烟火气的文案句子每日一更1。市井长巷,聚拢来是烟火,摊开来是人间。2。魂牵梦萦之中,家的炊烟永不消散,炊烟散尽了,还是炊烟。3。生生灯火,明暗无辄。4。我亦可贪恋烟火,殷实人家,几间瓦房,四方小院PC进入寒冬,微软再次挥刀裁员百能云芯硅谷巨头微软10月17日证实,距离上次大规模裁员仅短短3个月,该公司计划再次裁员,理由是电脑市况进入寒冬。据CNBC报道,微软发言人证实,多个部门正在进行新一轮裁员,具体裁员人数不路人某某某的故事第一次提笔记录自己的故事,希望踏过的每一步都能成为往后日子里的甜本人30女,大千世界里再普通不过的一员,生活在一个四五线的小城市。伴随着每天的日升日落,湮没在这个城市的边边角角。故吴敏霞退役后嫁平凡男孩,36岁生二胎,一家4口幸福美满郭晶晶嫁入豪门后,生活得十分幸福。有一次,她和吴敏霞一起游玩,就对她说我小叔子霍启山还没有结婚,你们要不要试一试?吴敏霞摇摇头表示谢谢,可我不想嫁豪门。郭晶晶感到好奇,就追问吴敏霞
宝山系统谋划区域焕新,解决今天问题腾出明天空间吴淞创新城,最高200米的超高建筑群,将刷新区域天际线近6。3平方公里的南大智慧城,将瞄准三座城驰骋数字新赛道探索先投后股模式,首批拟立项7个项目,扶持金额共5950万元首轮6个城广东省政府工作报告中的东莞元素,释放这些发展信号1月12日上午9时,广东省十四届人大一次会议开幕。南方记者梳理了2023年广东省政府工作报告中与东莞紧密相关的元素,分析其释放的发展信号。东莞中心城区一过去五年工作回顾报告原文继广新能源汽车换电行业研究换电风起ToB先行,百亿设备市场蓄势待发(报告出品方作者中国银河证券,鲁佩王霞举)一政策市场双向驱动,换电模式乘风而起(一)换电是新能源汽车的补能方式之一换电模式通过换电站对大量电池进行集中储存集中充电,于站内为新能源汽进一步完善市场经济基础制度党的二十大报告提出,构建高水平社会主义市场经济体制,这既是未来五年深化改革开放的一项重要任务,也是构建新发展格局推动高质量发展的体制保障。要构建高水平社会主义市场经济体制,必须进一扬州戴副局长的大学毕业照,18岁就参加工作?网友神童变了扬州戴副局长的大学毕业照真的是美艳的众人啊,就以他为起点,我们来浅析她在工作以后的容貌穿着打扮和她的气质有哪些变化。当然一开始肯定是从我们的戴局她大学毕业照学士服来看,其实从她的照2022抖音数据报告广州塔跻身十大最受欢迎云游景点文羊城晚报全媒体记者李丽抖音近日发布2022抖音数据报告(以下简称报告)。该报告从用户表达内容价值等维度展现了过去一年抖音的变化。疫情相关时刻成抖音用户2022年度共同记忆,报告显春节20万一晚客房已售罄?三亚市监局别墅套房不在价格调控范围央广网北京1月12日消息(记者汪宁)天价客房一房难求18万元一晚连住一个月随着春节假期旅游市场的逐渐升温,三亚酒店的高房价也引发了热议。近日,三亚市市场监督管理局价格处工作人员表示预计2023年生猪价格波动小于2022年央视网消息在国家发展改革委今天(1月12日)举行的新闻发布会上,有关负责人表示,当前国内生猪产能总体处于合理区间,预计2023年价格波动幅度会比2022年小一些。受周期性季节性超预苹果开启降价模式,新机型直降1130元,果粉可算盼到了这两年了解苹果手机行业的朋友,应该都明白,苹果手机越来越贬值了,以前总有人说苹果手机保值,用一两年再卖亏不了多少钱,但是现在新机刚发布没两三个月,价格少说也得跌去八九百,多一些可能年货节购机首选华硕无畏系列,全能配置体验出众在今年CES2023上正式亮相的无畏Pro16新品,创新搭载3。2K120Hz裸眼3DOLED屏,在屏幕性能创作体验等多维度实现创新升级,对笔电产品有着高阶需求的创作者不容错过,对国家发展改革委2023年有能力继续保持物价总体稳定央视网消息今天(1月12日)上午,国家发展改革委举行新闻发布会介绍国内物价运行情况,国家发展改革委价格司相关负责人表示,2022年,我国物价总水平持续平稳运行,2023年有能力继续