关于时间的操作,一直在使用momentjs这个库。方便灵巧,功能强大。唯一的缺点是,对于前端HTML来讲,它的包太太太太太大了。

我是momentjs的重度用户,但它的大小时刻都在折磨人。虽然方便高效,可这动辄200K的大小,对于首页加载速度来讲简直就是一场灾难。所以,开源社区有了一些精简的方案。如dayjs和miment。

dayjs

dayjs本身就是对标momentjs进行开发的,看作者的官方介绍:

Day.js is a minimalist JavaScript library that parses, validates, manipulates, and displays dates and times for modern browsers with a largely Moment.js-compatible API. If you use Moment.js, you already know how to use Day.js.

它的用法非常简单。

dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');

是不是很momentjs很相似?不,其实它们就是一模一样的。dayjs的API和moment几乎一模一样,所以如果想要替换到现有的momentjs代码,直接替换为dayjs即可,调用语句绝大部分情况下可以一字不改。

dayjs的大小有多少呢?2KB。再想想momentjs的大小。

miment

miment同样也是一个极简的时间处理库,压缩后的代码甚至达到了1KB左右,比dayjs还小。

与包大小相应的,作者团队只保留了momentjs中核心方法,但其实这些方法在普通场景下已经足够。

miment的使用方法,也和momentjs基本一致。例如:

miment().add(1, 'YYYY').add(2, 'MM').add(-3, 'DD') // 增加 1 年 2 个月又减回 3 天miment().isBetween('2000-01-01','2020-01-01') // truemiment().isBefore('2000-01-01') // falsemiment().format('YYYY年MM月DD日 星期ww') // 2018年04月09日 星期1 *周日对应星期0*

想要取得单独的年月日,更简单

miment().format('YYYY') // 2018
miment().format('MM') // 04
miment().format('DD') // 09
miment().format('hh') // 23
miment().format('mm') // 57
miment().format('ss') // 16
miment().format('SSS') // 063
miment().format('ww') // 1
miment().format('WW') // 一

结语

对于momentjs,大部分开发者都是又爱又恨,又或者大觉不爱。其实对于绝大部分的时间操作场景,dayjs和miment更符合使用要求。尤其对于非SSR的场合,想想那精简近200KB的首屏渲染速度,真的是非常有吸引力。

JS使用技巧2——momentjs太重了吗?试试dayjs和miment吧相关推荐

  1. 你的 IDE 太重了,试试 Emacs吧!

    点击关注公众号:互联网架构师,后台回复 2T获取2TB学习资源! 上一篇:Alibaba开源内网高并发编程手册.pdf IDE(Integrated Development Environment,集 ...

  2. 【repost】一探前端开发中的JS调试技巧

    有请提示:文中涉及较多Gif演示动画,移动端请尽量在Wifi环境中阅读 前言:调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问 ...

  3. 快过年了,分享 25 个 JS 实用技巧送给大家吧

    本文主要介绍一些JS中用到的小技巧,可以在日常Coding中提升幸福度,将不定期更新~ 类型强制转换 1.1 string强制转换为数字 可以用 *1来转化为数字(实际上是调用 .valueOf方法) ...

  4. 前端开发中JS调试技巧,你知道几种?用过几种?

    调试技巧,在任何一项技术研发中都可谓是必不可少的技能.掌握各种调试技巧,必定能在工作中起到事半功倍的效果.譬如,快速定位问题.降低故障概率.帮助分析逻辑错误等等.而在互联网前端开发越来越重要的今天,如 ...

  5. 你不知道的十个 JS 小技巧

    总结了一些开发常用的 JS 小技巧,让你的代码更优雅! 1. 使用 const 定义 在开发中不要过度声明变量,尽量使用表达式和链式调用形式.然后一般能用 const 就不要用 let .这种模式写多 ...

  6. 一探前端开发中的JS调试技巧

    转自:http://seejs.me/2016/03/27/%E3%80%90%E5%8E%9F%E5%88%9B%E3%80%91%E4%B8%80%E6%8E%A2%E5%89%8D%E7%AB% ...

  7. Spring Boot 太重,Vert.x 真香!

    欢迎关注方志朋的博客,回复"666"获面试宝典 作者:襄垣 juejin.im/post/5c89f266f265da2d8763b5f9 概述 SprintBoot总体来说,搭建 ...

  8. 吕梁离石学校计算机专业在哪里,山西吕梁计算机大专学校有哪些太重技校告诉您...

    山西吕梁计算机大专学校有哪些太重技校告诉您.选择专业的***关键的因素是你自身的兴趣,其他只能参考,如果你能准确的知道自己的兴趣所在,未来的职业所选,那么只需要一招就可以吃遍天.相信我,一生为自己感兴 ...

  9. Abp太重了?轻量化Abp框架

    本文首发于个人博客(https://blog.zhangchi.fun/) 在进行框架的选型时,经常会听到"***框架太重了"之类的声音,比如"Abp太重了,不适合我们. ...

最新文章

  1. SpringBoot 获取 application.properties 文件中的内容方法 【学习记录】
  2. 在Windows下,用Hexo搭建博客
  3. 资源丨机器学习进阶路上不可错过的28个视频
  4. 【数据挖掘笔记三】数据预处理
  5. C和C++中读取不定数量的输入数据
  6. 13.2System类中的常用方法
  7. 2021-05-21 matlab 傅里叶变换后恢复信号
  8. Navicat导出表结构
  9. c# 批量mqtt_C#使用 MQTTnet 快速实现 MQTT 通信(文末有完整Demo下载)
  10. 双稳态电路的两个稳定状态是什么_利用SR锁存器实现SPDT开关消抖电路
  11. BUPT复试专题—C翻转(2010)
  12. 40.Linux/Unix 系统编程手册(下) -- 登录记账
  13. 一文细数73个Vision transformer家族成员
  14. 小区报修管理系统c语言,小区物业报修管理系统的设计与实现.pdf
  15. 杨过最后达到了独孤求败的什么境界, 其实金庸在书中已说明
  16. 英国四高校携手开展智能传感器系统研究
  17. 无人驾驶时代的室外组网技术研究
  18. 实用的自然码双拼口诀
  19. ArcGIS小知识(五)——arcmap锁定图层-编辑时只选择唯一图层
  20. 【信号与系统】(二)信号与系统概述——基本信号

热门文章

  1. Mac 10.10下安装MySQL5.6.21提示安装失败
  2. 140303 命令行选项 ccf
  3. Content-Script-Type的设置好象没多大用处,或许我不知道有什么用
  4. 推荐系统之CTR预估-FNN模型解析
  5. TCP之1460MSS和1448负载
  6. 测开5 - Python(模块、操作数据库、操作Excel、加密)
  7. 【TCP/IP】TCP的三次握手和四次挥手
  8. (4)理解 neutron ml2---port创建流程代码解析
  9. 【转】BYV--有向图强连通分量的Tarjan算法
  10. codeforces 707D-(DFS+bitset)