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

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

央行最新调查不想消费不想投资中国人现在只想存钱现在的人对于存钱的需求越来越大,因为疫情的影响,让人们越来越意识到存钱的重要性。一些月光族,超前消费族在停工的日子里连交房租都困难,让他们深深地意识有家底的重要性。根据中国人民银行置顶很久都舍不得换掉的文案1。我不敢说我爱你,所以我逢人便说我想去远方。2。不要为了结束单身而去匆忙的爱3。我想找个像你的人,可最后才发现我最像你。才发现我的爱已经有了你的模样。4。想我就来见我,早安晚安感夜读丨春节,最美的祝福送给你。文字丨郝银主播丨金竹一年一度的春节到了。在这开心喜乐的日子里,送给大家10个祝福一祝有个好身体身体是万事的本钱,只有身体才是你自己的,身体好是幸福的保障。要爱惜自己的身体,改掉熬葬机吟(沉痛哀悼东航坠机遇难同胞)序人生本苦短,奈何多险关。聊表哀悼意,几句啰嗦言。正文风催云落春亦寒,机毁人亡谁不怜?残骸纷落荒草谷,破絮乱撒焦土山。忍看不知亲何在,遍寻难得一骨还。香销花谢恍若梦,凄离惨别一瞬间猫妈妈抱着孩子玩耍,感觉好几天没睡觉的样子,宝妈都是如此呀有了孩子之后,你才会明白带孩子是多么的累多么的苦!尤其是有哪些熊孩子,什么事情都要操心呢!有时候真的是让人又爱又恨呀!其实不仅仅是人类,对于动物们来说同样如此,它们也明白带孩子是多家有高中生早餐不凑合,做法简单营养又健康,孩子常吃身体棒大家好这里是小慧说美食,家长是不是每天都在为了孩子早餐而发愁,我家孩子早餐从来不凑合,跟着小慧一起来做吧,做法简单营养美味,孩子吃的有营养又健康,家长学会了按照小慧的步骤给孩子试着孩子挑食不爱吃饭怎么办?这四道开胃菜做着吃,孩子越吃越爱吃可能很多宝妈们都遇到过这样的问题,那就是孩子总挑食,不爱吃饭,一点青菜都不吃,遇到不喜欢吃的东西更是碰都不碰。可能有一方面是父母在饮食上的偏好影响到了孩子对食物的反感,还有一方面就老人瞎勤快带娃,孩子有苦说不出,宝妈也不敢明说,怕得罪人有没有发现,很多老人带孩子时,总会表现出很关心的样子,对孩子的衣食住行还是比较上心的。这些都是根据他们传统的思维模式来带孩子。之所以让老人带小孩,还是因为现在的父母都忙于工作,没有吴京不认识EXO,一句娘炮惨遭网暴,娱乐圈为何有不男不女在战狼1宣传期间,吴京接受一档节目的采访。提到当红男团EXO时,吴京表示不认识,我还是第一次听说。随即节目放出了一段EXO的视频,因为听到各种萌萌哒,还有美呆了惊艳了等形容词,看完春季孩子长个黄金期,除补钙这3点也要重视,错过还得等一年当看到同龄孩子比自己孩子的个头高时,人们往往都会流露出羡慕的目光,有的甚至会上前打听经验,希望自己的孩子也能够长高一点。毕竟孩子个子高,未来总是会更有优势,无论是在就业还是婚姻上,干货!惩罚孩子最管用的4招,爸妈赶紧试一试每一个孩子在成长的过程中,总会有大大小小的错误,很多父母,会采取打骂这种极其不冷静的方式来解决问题,实际来说,收效甚微!作为父母,也需要沉淀一些智慧的惩罚方式,让教育不要停留在治标
季后赛告急!湖人送走浓眉?真摆烂呗?回到20年前,詹姆斯看着18岁的自己幼詹向老詹询问未来有什么要注意的詹姆斯思索良久后,缓缓甩下了一句我知道他们爱你,但你最好不要去洛杉矶柚子依稀记得,很早前曾听过这么一句当你拥有勒比特币家族定居葡萄牙他们没车没房,全部身家都是加密货币齐鲁晚报齐鲁壹点记者王晓莹编译近年来,以比特币为代表的加密货币的兴起,改变了很多人的命运,以此为生似乎成了一种新的小众生活方式。来自荷兰的塔伊胡图一家就是个典型。2017年之前,他为什么你比别人更怕冷?代谢率新陈代谢较慢的人所消耗的能量少,产热也比较少,因此在同样的外界温度下,身体表面的温度可能就会比一些基础代谢强的人低一些。肌肉量细胞产热的最主要来源就是线粒体,而肌肉细胞是含有弥勒东风韵小镇,陪你做生活的艺术家生活本身就是艺术,偶尔也要学会享受生活,捕捉点滴生活中的艺术,做一个生活的艺术家!弥勒东风韵小镇,好似一个童话镇,充满了奇思妙想的艺术构思,耐着性子,陪你做生活的艺术家。刚到小镇入再见湖人,詹姆斯官宣决定!佩林卡压力徒增,紫金军恐分崩离析27胜31负,在全明星周末之前,洛杉矶湖人仅仅只能排在西部第九的位置,且他们距离西部第八还差了1。5个胜场,追赶并不容易。现在湖人已经不是考虑能不能争冠,本赛季还有没有希望的事情了正式离队!段江鹏疑似与马布里不和,马布里固执己见再被质疑正式离队!CBA名将疑似与马布里不和,马布里固执己见再被质疑CBA第三阶段的比赛即将开始,而大家也是发现,CBA排名前5的球队,根本就没有进行引援的工作,比如辽宁男篮和广东男篮,更NASA探测器透视金星的厚云,第一次拍到像热铁一样的地表确认到了金星上的大陆和平原!NASA的太阳探测器帕克太阳探针首次成功地在可见光下拍摄了金星表面。从拍摄到的图像来看,确认了迄今为止因云层太厚而看不见的金星地形。透过厚厚的大气层拍摄互联网大厂即将进入1065的时代?据报道,腾讯微信事业群(WXG)正在尝试实行代号1065的工作制。所谓1065,就是早上10点上班晚上6点下班,一周工作5天。WXG的这个1065可不是花架子,到点强制要求下班,加2022房产何去何从?先回顾一下吧,2021年终于过去了,虽然面临着疫情的反反复复,全球经济也陷入巨大的不确定中,因为我们国家正确积极对待,总算勉强撑了下来,但是相信很多人也看出,中小企业的经营艰难,普看透一个人的真面目,不需要听他说什么,只要看这4点01hr人这一生,只有这么一门课,我们称之为为人处世。为人处世的根本是什么?那就是看透对方在想什么,明白对方是个怎样的人。如果连别人都看不透,又何谈混得不错呢?大多人之所以混得不好微信上线新功能,开启后支持聚焦搜索,同时微信车载版也来了分享手机小技巧,传递科技新知识,大家好,欢迎来到科技办公室!最近,微信又悄悄上线了新的功能,我们可以通过聊天记录搜索图片了,同时微信也推出了车载版,画面更精简,就连朋友圈都没了。一