朱昆iamkun_com

朱昆iamkun_com 查看完整档案

填写现居城市  |  填写毕业院校  |  填写所在公司/组织 iamkun.com 编辑
编辑
_ | |__ _ _ __ _ | '_ \| | | |/ _` | | |_) | |_| | (_| | |_.__/ \__,_|\__, | |___/ 个人简介什么都没有

个人动态

朱昆iamkun_com 发布了文章 · 2月24日

🎊 Element UI 新春快报

新年好,Element UI 开发团队给各位支持我们的开发者们拜个晚年,祝大家在新的一年里工作没 bug, 天天不加班。

在过去一年里,Element UI 团队在稳定维护 Vue 2.x 版本的同时,推出了适配 Vue 3.x 的全新版本,丰富 Vue 3的社区生态,也希望在新的一年为广大开发者提供更好的开发体验,做出更懂大家的开源产品。

Element UI

Element UI 发布了 v2.15.1 版本,主要包括了 bug 修复和性能提升。主要修复了 Select, Popconfirm, Drawer, Calendar,Cascader 等组件的问题。

同时我们也更新了最新的 Axure 设计资源文件,供设计师和产品经理选用。

Element Plus for Vue 3

Element Plus 发布了 v1.0.2-beta.32 版本,主要包含对 Vue 3 的适配,同时也增加了 Space, Skeleton, Empty 和 Affix 四个全新组件丰富开发者的选择。
image
全新设计的暗黑主题也在按计划紧张开发中。
image

后续计划

在未来一段时间内,我们会保持 Element UI 和 Element Plus 两个版本同步维护更新。考虑到大部分开发者仍然在使用 Vue 2 进行开发,新功能在 Element Plus 上测试完善后同步更新到 Element UI。

随着 Vue 3 的普及,我们将会逐步降低 Vue 2.x 项目 的维护频率,并将工作重心转移到 Vue 3.x 上。

感谢大家来对 Element 的关注和喜爱,是你们的支持让 Element 不断完善,力争做到最好。非常欢迎热爱开源的你来和我们一起完善 Element,同时团队也在拓展微前端和低代码开发领域,勾搭方式 vivas.qjq@alibaba-inc.com,阿里巴巴本地生活欢迎你的到来。

查看原文

赞 17 收藏 1 评论 7

朱昆iamkun_com 收藏了文章 · 1月18日

🎉 Element UI for Vue 3.0 来了!

第一个使用 TypeScript + Vue 3.0 Composition API 重构的组件库 Element Plus 发布了 🎉 ~

2016 年 3 月 13 日 Element 悄然诞生,经历了 4 年的风雨洗礼,我们从一个饿了么内部业务组件库成长为 Vue 生态里最流行的 UI 组件库之一。

截至本文撰写时,Element 已获得 48200 Github Star, NPM 下载量 95 万次/每月的可喜成绩。感谢超过 530 名社区贡献者的参与维护,和我们一同完成了 4400 次 commit 的更新迭代。

Element 40000 star
*Element 开发团队 40000 Github Star 庆祝会

Element Plus for Vue 3.0

2020 年,随着 Vue 3.0 不断完善和发布,我们也紧张投入到 Element 对 Vue 3.0 的升级适配工作中。历经 6 个月共计 23 个 alpha 版本的迭代,终于,在今天, Element Plus for Vue 3.0 Beta 版本正式发布 🎊 !

https://github.com/element-plus/element-plus

Vue 3.0 的大版本升级,对生态组件库来说也是一次丢掉历史包袱前行的好机会,我们大刀阔斧对 Element 进行了一次深度重构。

Element Plus For Vue 3

Element Plus for Vue 3.0 是一个使用 TypeScript + Composition API 重构的全新项目。我们几乎重写了每一行 Element 的代码,用最 Vue 3 的方式呈现了最完美的 Element,主要有:

  • 使用 TypeScript 开发,提供完整的类型定义文件
  • 使用 Vue 3.0 Composition API 降低耦合,简化逻辑
  • 使用 Vue 3.0 Teleport 新特性重构挂载类组件
  • 使用 Lerna 维护和管理项目
  • 使用更轻量更通用的时间日期解决方案 Day.js
  • 升级适配 popperjs, async-validator 等核心依赖
  • 完善 52 种国际化语言支持

除此以外,还有:

  • 全新的视觉*
  • 优化的组件 API
  • 更多自定义选项
  • 更加详尽友好的文档

Q:Element Plus 和 Element UI 是什么关系? 为什么又一个新项目?

正如 vue-next 之于 vue,一次 100% 的重构虽然解决了很多历史遗留问题,但也不可避免的引入一些新的 bug 和问题,而独立的 issue 和 pr 区可以减少大家使用和反馈的心智成本,也能更加方便我们定位问题,并行维护迭代。

Element will stay with Vue 2.x

For Vue 3.0, we recommend using Element Plus from the same team

具体可以参考 Element 的 README https://github.com/ElemeFE/element/blob/dev/README.md

Q: 老 Element 项目可以平滑升级到 Vue 3.0 + Element Plus 吗?

由于 Vue 3.0 升级引入了部分 API 的调整,老项目的升级不可避免的要做些许改动。但我们力争把变更内容做到可控,只需要很少的调整就能完成项目升级。在今后 Vue 3.0 的项目里,还是熟悉的 Element 的配方和味道。

Q: Element UI 还会维护吗?

当然会!(而且一直在正常迭代发布呀 ヽ(✿゚▽゚)ノ)

每每看到社区类似的担忧,对我们都是一种鞭策。作为一个负责任的开源项目,必然不会辜负大家的期待。随着用户的增多,肩上的压力也越来越大,希望大家使用了 Element 能真正为项目开发减负提效,这样我们多加班,大家早下班,想到这,感觉胸前的红领巾更鲜艳了😘。

开始体验吧

有很多方式可以体验 Element Plus for Vue 3.0

  • 手动安装 npm install element-plus ,详见官网安装指南
  • 🥳 尝鲜时下最炫酷的Vite 打包脚手架

What's Next for Element Plus?

  • 一次重大视觉更新
  • 2 个全新组件紧张研发中
  • 访问速度更快,功能更强大的官方网站

喜欢 Element Plus 吗?来点个 Star ❤️ 支持鼓励我们一下吧 ~

感谢大家 4 年以来对 Element 的关注,是你们的支持让 Element 不断完善,力争做到最好。我们也会不忘开源初心,反哺社区,未来将对社区更加开放,非常欢迎热爱开源的你来和我们一起完善 Element Plus —— 赠人玫瑰,手有余香,开源社区的维护,不仅仅是靠一个团队,一个公司,我们相信是靠所有热爱开源,拥有开源精神,热衷于分享和交流的朋友们。

查看原文

朱昆iamkun_com 发布了文章 · 1月18日

🎉 Element UI for Vue 3.0 来了!

第一个使用 TypeScript + Vue 3.0 Composition API 重构的组件库 Element Plus 发布了 🎉 ~

2016 年 3 月 13 日 Element 悄然诞生,经历了 4 年的风雨洗礼,我们从一个饿了么内部业务组件库成长为 Vue 生态里最流行的 UI 组件库之一。

截至本文撰写时,Element 已获得 48200 Github Star, NPM 下载量 95 万次/每月的可喜成绩。感谢超过 530 名社区贡献者的参与维护,和我们一同完成了 4400 次 commit 的更新迭代。

Element 40000 star
*Element 开发团队 40000 Github Star 庆祝会

Element Plus for Vue 3.0

2020 年,随着 Vue 3.0 不断完善和发布,我们也紧张投入到 Element 对 Vue 3.0 的升级适配工作中。历经 6 个月共计 23 个 alpha 版本的迭代,终于,在今天, Element Plus for Vue 3.0 Beta 版本正式发布 🎊 !

https://github.com/element-plus/element-plus

Vue 3.0 的大版本升级,对生态组件库来说也是一次丢掉历史包袱前行的好机会,我们大刀阔斧对 Element 进行了一次深度重构。

Element Plus For Vue 3

Element Plus for Vue 3.0 是一个使用 TypeScript + Composition API 重构的全新项目。我们几乎重写了每一行 Element 的代码,用最 Vue 3 的方式呈现了最完美的 Element,主要有:

  • 使用 TypeScript 开发,提供完整的类型定义文件
  • 使用 Vue 3.0 Composition API 降低耦合,简化逻辑
  • 使用 Vue 3.0 Teleport 新特性重构挂载类组件
  • 使用 Lerna 维护和管理项目
  • 使用更轻量更通用的时间日期解决方案 Day.js
  • 升级适配 popperjs, async-validator 等核心依赖
  • 完善 52 种国际化语言支持

除此以外,还有:

  • 全新的视觉*
  • 优化的组件 API
  • 更多自定义选项
  • 更加详尽友好的文档

Q:Element Plus 和 Element UI 是什么关系? 为什么又一个新项目?

正如 vue-next 之于 vue,一次 100% 的重构虽然解决了很多历史遗留问题,但也不可避免的引入一些新的 bug 和问题,而独立的 issue 和 pr 区可以减少大家使用和反馈的心智成本,也能更加方便我们定位问题,并行维护迭代。

Element will stay with Vue 2.x

For Vue 3.0, we recommend using Element Plus from the same team

具体可以参考 Element 的 README https://github.com/ElemeFE/element/blob/dev/README.md

Q: 老 Element 项目可以平滑升级到 Vue 3.0 + Element Plus 吗?

由于 Vue 3.0 升级引入了部分 API 的调整,老项目的升级不可避免的要做些许改动。但我们力争把变更内容做到可控,只需要很少的调整就能完成项目升级。在今后 Vue 3.0 的项目里,还是熟悉的 Element 的配方和味道。

Q: Element UI 还会维护吗?

当然会!(而且一直在正常迭代发布呀 ヽ(✿゚▽゚)ノ)

每每看到社区类似的担忧,对我们都是一种鞭策。作为一个负责任的开源项目,必然不会辜负大家的期待。随着用户的增多,肩上的压力也越来越大,希望大家使用了 Element 能真正为项目开发减负提效,这样我们多加班,大家早下班,想到这,感觉胸前的红领巾更鲜艳了😘。

开始体验吧

有很多方式可以体验 Element Plus for Vue 3.0

  • 手动安装 npm install element-plus ,详见官网安装指南
  • 🥳 尝鲜时下最炫酷的Vite 打包脚手架

What's Next for Element Plus?

  • 一次重大视觉更新
  • 2 个全新组件紧张研发中
  • 访问速度更快,功能更强大的官方网站

喜欢 Element Plus 吗?来点个 Star ❤️ 支持鼓励我们一下吧 ~

感谢大家 4 年以来对 Element 的关注,是你们的支持让 Element 不断完善,力争做到最好。我们也会不忘开源初心,反哺社区,未来将对社区更加开放,非常欢迎热爱开源的你来和我们一起完善 Element Plus —— 赠人玫瑰,手有余香,开源社区的维护,不仅仅是靠一个团队,一个公司,我们相信是靠所有热爱开源,拥有开源精神,热衷于分享和交流的朋友们。

查看原文

赞 18 收藏 4 评论 1

朱昆iamkun_com 回答了问题 · 2020-08-20

解决为何JavaScript不内置一个日期格式化方法?

在没有更好的原生支持之前,来尝试一下 Day.js 吧

Day.js 2kB超轻量时间库 和Moment.js一样的API https://segmentfault.com/a/1190000014625584

关注 7 回答 8

朱昆iamkun_com 收藏了文章 · 2019-01-03

打造 10000 Star 的前端开源项目 ⭐

在工作学习之余,你可能会萌生做一个开源项目的想法。一方面将自己的好代码分享出去帮助更多开发者,另一方面也希望在开源社区中得到反馈和成长。如果项目能获得很多的关注那更是锦上添花,高 Star 不仅是衡量开源项目可靠程度的一个重要依据,这样项目维护者的 Github 也能在招聘中让公司提前了解候选人的开源贡献、技术热情和编程习惯等,获得面试官的加分。

那么,开源项目怎么才能获得更多的 Star 数呢?这里通过总结我这段时间维护 Day.js 项目的过程中的一些经验教训,来说说如何改进和推广你的开源项目。

瞄准用户痛点

开源社区的内容包罗万象,整理收藏的 Markdown 笔记、 框架全家桶的搭建、炫酷的动画效果以及各种工具库、框架等都是很好的开源方向,但是考虑到项目的功能、受众、开发语言等等因素,不同类型的项目实现起来的难度和被社区接受的程度也千差万别。但如果项目能瞄准开发者的痛点,提供优秀的解决方案,就有获得更多关注的可能。一个人的精力始终是有限的,只有更多的人加入进来,使用、反馈、迭代和推广,才能形成开源项目的良性循环。

比如我在工作中发现 Moment.js 虽然能很方便地处理日期和时间但这个库打包体积太大了,而要想迁移到社区其他几个轻量的时间库又会增加新的学习成本和迁移工作量。所以开发 Day.js 的目标就是做一个和 Moment.js 一样 API 设计,一样功能,更加轻量的时间日期库。

选择开源协议

相较与项目本身的代码和文档等,开源协议可能是一个容易被忽视的细节。开源协议是软件的授权许可,表述了用户获得你开源的代码后拥有的权利和义务。

我在初期推广时就犯了个错误,没意识到开源协议的重要性,也没有给项目添加任何协议。在版权意识相对更强的英文社区宣传时就遇到了很大的阻力和各种质疑,他们觉得这样的项目是不专业的,也不敢去轻易尝试,就这样白白错失了一部分初始用户。

关于怎么去选择一个适合项目的开源协议,可以参考这个网站 Choose License。如果你希望项目可以尽可能被广泛地推广、使用和传播,就可以考虑选择一个分发自由度比较高的开源协议。

规范提交记录

使用一个规范的 Git 提交记录是很有必要的,这不仅让多人开发中的参与者能更好地了解项目的迭代历史和进程,也能在出现问题时快速定位,找到问题代码的提交记录。同时我们还可以使用工具根据提交记录自动生成更新说明 (CHANGELOG),方便用户了解每次更新的具体内容,也免去了项目维护者手动更新的痛苦。
目前前端社区中使用较多的 Git Commit 提交规范是 Angular 规范 (Git Commit Message Conventions ),Commit 的格式包含 Header、Body、Footer 三个部分:

<type>(<scope>): <subject>

<body>

<footer>

但如果每次提交代码的 Commit Message 都需要我们按照上述格式来录入的话还是一件又累又容易忘记的苦差事。推荐两个工具来辅助我们的操作:

  • 使用 commitizen 进行交互式的 Commit 填写,如下图所示,只需要按照提示选择更新的 type 和填写必要的信息,就能自动生成符合规范的提交记录;
  • 使用 @semantic-release/changelog 来根据 Commit 中 type 自动增量生成 CHANGELOG;

语义化版本号

每个社区都有自己的版本号规范,千万不能因为是自己的开源项目就随心所欲地填写版本号,不然可能会给使用者带来不必要的麻(彩)烦(蛋)。在 NPM 生态圈中绝大部分包都是使用语义化版本号 (Semantic Versioning),即版本号为 a.b.c 的形式,其中 a 是大版本号,b 是次版本号,c 是修订号。

如果开源项目有按上文所述规范地提交 Commit ,就可以使用 semantic-release 来实现全自动更新版本号和发布,这个工具会判断 Commit Message 的不同,fix 增加修订号,feat 增加次版本号,而包含 BREAKING CHANGE 的提交增加大版本号。

推广和分析

酒香也怕巷子深,再精美的项目,如果作者自身没什么知名度,又没有太多推广的话,这个项目很有可能就被淹没在众多开源项目之中了。除了在众所周知的国内开发社区推广之外,希望大家也不要忽视了国外的社区和论坛。要知道虽然中文开发者数量越来越多,但也只占到全球开发者的一部分,为了获得更多关注,我们有必要把开源项目国际化,来帮助更多的开发者。而英语是软件开发者们的通用语言,翻译一份英文版的 README 就是走向国际化的第一步。

在推广 Day.js 的过程中,我会在 Twitter 大佬们吐槽 Date 函数、 Moment.js 库的推文下,介绍我的项目的特点,希望他们可以尝试一下(但要有礼貌,广告别太硬)。社区红人的一个 Star 或一条支持的推文就能依靠社交网络快速传播,给项目带来巨大的流量和很高的关注度。

在每次的重大功能更新或集中推广之后,我们要通过项目的 Pull request, Issue, Star, Download Count 等数据的变化来了解推广效果和用户的满意度。前端工程师都知道,比起一堆数字,可视化的数据图表可以帮助我们更好地理解数据。

npmjs.com 展示下载量变化的折线图,可以分析项目被使用和被依赖的情况。bestofjs.org 展示了项目 Star 数变化的日历色块图,格子越深说明增量越快。下图深色的小块就是项目几次比较成功的推广,而有些推广并没有带来很大的增长就需要总结经验并改善方法了。

开始做一个开源项目并不难,要勇敢地迈出自己的第一步。但是持续维护开源项目并不是一件很容易坚持下来的事,我们需要找到自己维护项目的动力,给用户提供必要的支持,收集用户的反馈,不断完善项目,进而形成一个完整的产品闭环来推动项目的不断迭代更新。

当然能做到这些, Star 数量的多少已经不是那么重要了,我们丰富了开源社区的内容,帮助了更多的开发者,也从开源的经历中得到了视野的拓展,能力的提升,这才更有价值的收获。

P.S. 如果你热爱前端,热爱开源,欢迎加入我们团队,这里有网红开源 UI 库 Element,承接了公司 98% 前端项目的发布系统,比 jsdeliver 更好用的静态资源管理平台和更多有意思的项目等着你。请联系 kun.zhu@ele.me ,饿了么大前端有你更精彩。

查看原文

朱昆iamkun_com 发布了文章 · 2019-01-03

打造 10000 Star 的前端开源项目 ⭐

在工作学习之余,你可能会萌生做一个开源项目的想法。一方面将自己的好代码分享出去帮助更多开发者,另一方面也希望在开源社区中得到反馈和成长。如果项目能获得很多的关注那更是锦上添花,高 Star 不仅是衡量开源项目可靠程度的一个重要依据,这样项目维护者的 Github 也能在招聘中让公司提前了解候选人的开源贡献、技术热情和编程习惯等,获得面试官的加分。

那么,开源项目怎么才能获得更多的 Star 数呢?这里通过总结我这段时间维护 Day.js 项目的过程中的一些经验教训,来说说如何改进和推广你的开源项目。

瞄准用户痛点

开源社区的内容包罗万象,整理收藏的 Markdown 笔记、 框架全家桶的搭建、炫酷的动画效果以及各种工具库、框架等都是很好的开源方向,但是考虑到项目的功能、受众、开发语言等等因素,不同类型的项目实现起来的难度和被社区接受的程度也千差万别。但如果项目能瞄准开发者的痛点,提供优秀的解决方案,就有获得更多关注的可能。一个人的精力始终是有限的,只有更多的人加入进来,使用、反馈、迭代和推广,才能形成开源项目的良性循环。

比如我在工作中发现 Moment.js 虽然能很方便地处理日期和时间但这个库打包体积太大了,而要想迁移到社区其他几个轻量的时间库又会增加新的学习成本和迁移工作量。所以开发 Day.js 的目标就是做一个和 Moment.js 一样 API 设计,一样功能,更加轻量的时间日期库。

选择开源协议

相较与项目本身的代码和文档等,开源协议可能是一个容易被忽视的细节。开源协议是软件的授权许可,表述了用户获得你开源的代码后拥有的权利和义务。

我在初期推广时就犯了个错误,没意识到开源协议的重要性,也没有给项目添加任何协议。在版权意识相对更强的英文社区宣传时就遇到了很大的阻力和各种质疑,他们觉得这样的项目是不专业的,也不敢去轻易尝试,就这样白白错失了一部分初始用户。

关于怎么去选择一个适合项目的开源协议,可以参考这个网站 Choose License。如果你希望项目可以尽可能被广泛地推广、使用和传播,就可以考虑选择一个分发自由度比较高的开源协议。

规范提交记录

使用一个规范的 Git 提交记录是很有必要的,这不仅让多人开发中的参与者能更好地了解项目的迭代历史和进程,也能在出现问题时快速定位,找到问题代码的提交记录。同时我们还可以使用工具根据提交记录自动生成更新说明 (CHANGELOG),方便用户了解每次更新的具体内容,也免去了项目维护者手动更新的痛苦。
目前前端社区中使用较多的 Git Commit 提交规范是 Angular 规范 (Git Commit Message Conventions ),Commit 的格式包含 Header、Body、Footer 三个部分:

<type>(<scope>): <subject>

<body>

<footer>

但如果每次提交代码的 Commit Message 都需要我们按照上述格式来录入的话还是一件又累又容易忘记的苦差事。推荐两个工具来辅助我们的操作:

  • 使用 commitizen 进行交互式的 Commit 填写,如下图所示,只需要按照提示选择更新的 type 和填写必要的信息,就能自动生成符合规范的提交记录;
  • 使用 @semantic-release/changelog 来根据 Commit 中 type 自动增量生成 CHANGELOG;

语义化版本号

每个社区都有自己的版本号规范,千万不能因为是自己的开源项目就随心所欲地填写版本号,不然可能会给使用者带来不必要的麻(彩)烦(蛋)。在 NPM 生态圈中绝大部分包都是使用语义化版本号 (Semantic Versioning),即版本号为 a.b.c 的形式,其中 a 是大版本号,b 是次版本号,c 是修订号。

如果开源项目有按上文所述规范地提交 Commit ,就可以使用 semantic-release 来实现全自动更新版本号和发布,这个工具会判断 Commit Message 的不同,fix 增加修订号,feat 增加次版本号,而包含 BREAKING CHANGE 的提交增加大版本号。

推广和分析

酒香也怕巷子深,再精美的项目,如果作者自身没什么知名度,又没有太多推广的话,这个项目很有可能就被淹没在众多开源项目之中了。除了在众所周知的国内开发社区推广之外,希望大家也不要忽视了国外的社区和论坛。要知道虽然中文开发者数量越来越多,但也只占到全球开发者的一部分,为了获得更多关注,我们有必要把开源项目国际化,来帮助更多的开发者。而英语是软件开发者们的通用语言,翻译一份英文版的 README 就是走向国际化的第一步。

在推广 Day.js 的过程中,我会在 Twitter 大佬们吐槽 Date 函数、 Moment.js 库的推文下,介绍我的项目的特点,希望他们可以尝试一下(但要有礼貌,广告别太硬)。社区红人的一个 Star 或一条支持的推文就能依靠社交网络快速传播,给项目带来巨大的流量和很高的关注度。

在每次的重大功能更新或集中推广之后,我们要通过项目的 Pull request, Issue, Star, Download Count 等数据的变化来了解推广效果和用户的满意度。前端工程师都知道,比起一堆数字,可视化的数据图表可以帮助我们更好地理解数据。

npmjs.com 展示下载量变化的折线图,可以分析项目被使用和被依赖的情况。bestofjs.org 展示了项目 Star 数变化的日历色块图,格子越深说明增量越快。下图深色的小块就是项目几次比较成功的推广,而有些推广并没有带来很大的增长就需要总结经验并改善方法了。

开始做一个开源项目并不难,要勇敢地迈出自己的第一步。但是持续维护开源项目并不是一件很容易坚持下来的事,我们需要找到自己维护项目的动力,给用户提供必要的支持,收集用户的反馈,不断完善项目,进而形成一个完整的产品闭环来推动项目的不断迭代更新。

当然能做到这些, Star 数量的多少已经不是那么重要了,我们丰富了开源社区的内容,帮助了更多的开发者,也从开源的经历中得到了视野的拓展,能力的提升,这才更有价值的收获。

P.S. 如果你热爱前端,热爱开源,欢迎加入我们团队,这里有网红开源 UI 库 Element,承接了公司 98% 前端项目的发布系统,比 jsdeliver 更好用的静态资源管理平台和更多有意思的项目等着你。请联系 kun.zhu@ele.me ,饿了么大前端有你更精彩。

查看原文

赞 48 收藏 30 评论 2

朱昆iamkun_com 收藏了文章 · 2018-04-27

⏰Day.js 2kB超轻量时间库 和Moment.js一样的API

Day.js


Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间。但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API。虽然社区也有几个轻量的时间库,要想迁移过去又会增加新的学习和迁移成本。

如果能有一个和 Moment.js 一样语法,一样功能,又轻量的库该多好!

Day.js 是一个轻量的 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样. 如果你曾经用过 Moment.js, 那么你已经知道如何使用 Day.js

Day.js 基本用法如下,相同的API,相同的链式操作。

dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
  • ? 和 Moment.js 相同的 API 和用法
  • ? 不可变数据 (Immutable)
  • ? 支持链式操作 (Chainable)
  • ? 仅 2kb 大小的微型库
  • ? 全浏览器兼容

Day.js 虽然仅有 2kb 大小,但是功能一点都没有阉割。包含了时间处理的全部常用方法。

文档地址 (中文)?

喜欢可以给个?star?鼓励一下吗
https://github.com/xx45/dayjs


如果您的项目想缩小打包体积,提升开发体验只需要 replace(/moment/g, 'dayjs') 全局替换一下。就能从 Moment.js + locals 200kb 减小成 dayjs 2kb的体积。所有的API调用都保持不变,无需修改。

来感受一下 Dayjs 的语法吧,是不是很看起来亲切呢 ? (没错 这就是 moment 的语法嘛)

创建

dayjs() // 当前时间
dayjs('1995-12-25') // 1995-12-25
dayjs(Date.now() - 24 * 60 * 60 * 1000) // 昨天

格式化

dayjs().format('YYYY年MM月DD日 HH:mm:ss') // 2018年08月08日 00:00:00
dayjs().format('[YYYY]') // "[2018]"。[] 里的会原样输出。

操作

dayjs().add(7, 'days') // 之后的第7天
dayjs().subtract(1, 'months') // 上个月
dayjs().startOf('months') // 获取一月初 
dayjs().endOf('year') // 获取一年年末

查询

dayjs('2010-10-20').isBefore('2010-10-21') // 早于
dayjs('2010-10-20').isAfter('2010-10-19') // 晚于
dayjs().isLeapYear() // 闰年

issue and pr's welcome

欢迎来issue和pr哦
https://github.com/xx45/dayjs

查看原文

朱昆iamkun_com 发布了文章 · 2018-04-27

⏰Day.js 2kB超轻量时间库 和Moment.js一样的API

Day.js


Moment.js 是一个大而全的 JS 时间库,很大地方便了我们处理日期和时间。但是 Moment.js太重了(200k+ with locals),可能一般项目也只使用到了她几个常用的API。虽然社区也有几个轻量的时间库,要想迁移过去又会增加新的学习和迁移成本。

如果能有一个和 Moment.js 一样语法,一样功能,又轻量的库该多好!

Day.js 是一个轻量的 JavaScript 时间日期处理库,和 Moment.js 的 API 设计保持完全一样. 如果你曾经用过 Moment.js, 那么你已经知道如何使用 Day.js

Day.js 基本用法如下,相同的API,相同的链式操作。

dayjs().startOf('month').add(1, 'day').set('year', 2018).format('YYYY-MM-DD HH:mm:ss');
  • ? 和 Moment.js 相同的 API 和用法
  • ? 不可变数据 (Immutable)
  • ? 支持链式操作 (Chainable)
  • ? 仅 2kb 大小的微型库
  • ? 全浏览器兼容

Day.js 虽然仅有 2kb 大小,但是功能一点都没有阉割。包含了时间处理的全部常用方法。

文档地址 (中文)?

喜欢可以给个?star?鼓励一下吗
https://github.com/xx45/dayjs


如果您的项目想缩小打包体积,提升开发体验只需要 replace(/moment/g, 'dayjs') 全局替换一下。就能从 Moment.js + locals 200kb 减小成 dayjs 2kb的体积。所有的API调用都保持不变,无需修改。

来感受一下 Dayjs 的语法吧,是不是很看起来亲切呢 ? (没错 这就是 moment 的语法嘛)

创建

dayjs() // 当前时间
dayjs('1995-12-25') // 1995-12-25
dayjs(Date.now() - 24 * 60 * 60 * 1000) // 昨天

格式化

dayjs().format('YYYY年MM月DD日 HH:mm:ss') // 2018年08月08日 00:00:00
dayjs().format('[YYYY]') // "[2018]"。[] 里的会原样输出。

操作

dayjs().add(7, 'days') // 之后的第7天
dayjs().subtract(1, 'months') // 上个月
dayjs().startOf('months') // 获取一月初 
dayjs().endOf('year') // 获取一年年末

查询

dayjs('2010-10-20').isBefore('2010-10-21') // 早于
dayjs('2010-10-20').isAfter('2010-10-19') // 晚于
dayjs().isLeapYear() // 闰年

issue and pr's welcome

欢迎来issue和pr哦
https://github.com/xx45/dayjs

查看原文

赞 6 收藏 7 评论 1

朱昆iamkun_com 分享了头条 · 2018-04-27

Github 很火的库,trending排行榜前三,4000个star,Moment.js 的 2kB 轻量化方案,拥有同样强大的 API

赞 0 收藏 0 评论 0

朱昆iamkun_com 关注了用户 · 2017-12-22

绛霜_Alma @shuang_alma

一个熟练掌握高中地理知识的前端萌妹^_^

关注 6

认证与成就

  • 获得 88 次点赞
  • 获得 2 枚徽章 获得 0 枚金徽章, 获得 0 枚银徽章, 获得 2 枚铜徽章

擅长技能
编辑

开源项目 & 著作
编辑

(゚∀゚ )
暂时没有

注册于 2017-03-11
个人主页被 2k 人浏览