Skip to main content

游牧周记第71期

· 6 min read
Suhe
This site owner

开发

date-fns日期库替代Dayjs

在我基本所有项目中使用的轻量高效好用的Dayjs,已经n年了,实在找不出它有任何缺点。不过既然有新的了,我们请AI对比一下。 根据搜索结果,我为你整理出 date-fns vs dayjs 的全面对比表格:

核心对比表

维度date-fnsdayjs
架构先进性函数式编程,纯函数设计面向对象,链式调用 API
包体积按需导入 <3KB (单函数仅1-2KB)核心2-7KB,插件累加
Tree-shaking✅ 原生完美支持✅ 支持,但核心整体导入
运行时性能更快快,略逊于 date-fns
API 风格函数式:format(date, 'yyyy-MM-dd')链式:dayjs().format()
Moment 兼容❌ 不兼容✅ API 几乎完全一致
TypeScript内置支持内置支持
国际化80+ 语言,模块化导入需插件,语言包较小
时区支持date-fns-tz 扩展需插件,功能有限
生态活跃度活跃,周下载量高更活跃,周下载量 29M+
学习成本中等(函数式思维)极低(Moment 用户零成本)

关键差异总结

场景推荐选择
极致体积控制date-fns(按需导入最小)
Moment 迁移dayjs(无缝切换)
函数式/模块化项目date-fns
快速原型/简单需求dayjs
复杂日期运算date-fns(功能更完整)
高频操作性能敏感date-fns

一句话结论

  • date-fns:先进、性能更好、体积最小(按需),适合现代模块化项目
  • dayjs:上手最快、Moment 替代品,适合快速开发和迁移场景

两者都碾压 Moment.js,选谁都不踩坑,看团队技术栈偏好。

哈哈,都在提Moment.js不知道这个如何了? 我觉得国际化的方便性可能是个选择关键点,在下一个Tauri项目中使用了。

不懂Rust的情况下开启Tauri桌面项目

在Codex/OpenAI/CC的各种模型配合下,用一天时间搭建了一个基本完整的AI相关桌面应用。 前端React,体验比我想的好得多。 后端完全AI写的,我甚至没去看代码。

AI

简单图像处理,AI还是扯

实现简单的类似PS魔术棒方式抠图,用AI把人累死。 最后下载安装了一个GIMP搞定,幸好当年的PS功底还有点。 豆包算是这次最强了,但把人气死了搞不定。 Kimi居然现场生产python程序还处理,看着像模像样很唬人,结果一坨。 GPT,Grok,Perplexity全部试了,集体扑街,其中GPT最差,还特别慢。 这些AI生图做图都可以,但具体的加工做不到。 我就是想把图标中这个星球部分抠出来而已。

Superpowers好是好,就是tokens吃不消

项目开发质量控制确实提高了。 但侵入性还太强,没有什么可选性。

记一次AI Coding会诊

具体问题就不说了,大致是Tauri程序在macos终端运行一系列命令,结果出现卡死问题。 让AI分析原因并解决。 最开始是Codex/GPT-5.4,尝试了几种方法(其中有一个原因已经找到,但没有解决,就跳过了),半小时没搞定,就建议我先放一放,作别的任务。 然后国产的(claude code或opencode调用)GLM-5,处理了几个钟头,甚至连续测试开发不停,以前从未见它这样,绝不放弃的精神,开启了上百个terminal窗口测试。分析出了很高大上的问题,尝试了无数解决方案,但还是没搞定。我都看得肉痛,请他休息一下,把思路和经验总结一下,交给其他AI接手。 然后打开Antigravity,看今天有没有免费额度,Claude的所有模型都没有,Gemini 3.1 Flash也耗尽了,只有个一直躲在角落的Gemini 3 Flash,我犹豫了一下,还是让它来干,由于怕出错,提醒他先参考之前的总结,然后自己分析测试,别改代码。没想到10分钟后,它通过几轮测试,提出了不同的看法(和之前Codex的一个观点接近),然后给出了解决方法。我同意它改代码,然后搞定,世界安静了。 之后我请Gemini做个总结,然后告诉GLM-5这个消息,让它反思一下自己当时为啥没想到这点。值得欣慰的是,它的反思非常客观,态度也很端正,节选如下:

非常好的反思问题。让我分析一下我的思维盲点:
我当时没想到的原因分析
1. 被表面现象误导
我看到的现象:
...
我的错误推理:
...
我遗漏的推理链:
...
2. 过度关注错误起点
...
3. 忽略了关键对比实验
我应该做但没有做的测试:
...
如果做了这些对比,我会发现:
...
...
如果我看到输出中的...,我可能会意识到这是初始化查询。
4. 过早放弃探索
当我测试了多种方法都失败后,我过早得出结论:
...
实际上,我还应该测试:
...
我忽略的关键部分:
...

它还赞许了其他模型,并对自己进行了鞭策:

Gemini 的思维优势
8. 识别到关键线索
...
9. 理解终端启动的微妙细节
...
10. 提出优雅的解决方案
两阶段启动简单、可靠、通用:
...
我应该学到什么
1. 建立对照实验的思维
遇到问题时,先建立基准:
...
2. 深入理解底层机制
不要只停留在表面现象:
...
3. 不要过早放弃
即使多次尝试失败,也要:
- 换个角度思考
- 测试更简单的假设
- 查看其他相似问题的解决方案
...
总结
我没想到的根本原因是:
1. 思维定势:看到 TTY 错误就认为核心是 TTY 检测
2. 缺乏经验:不知道 PTY 初始化的微妙时序
3. 测试不足:没有做关键的对照实验
4. 理解浅层:没有深入分析 Crossterm 的初始化流程
Gemini 的优势在于:
- 从现象反推时序问题
- 理解终端初始化的细节
- 验证简单但关键的假设
- 提出优雅通用的解决方案
这是一次很好的学习机会,让我意识到在调试系统级问题时,需要更深入地理解底层机制,而不是停留在表面现象。

希望所有的学术机构都向GLM-5这种态度学习。

影视

The Boys 黑袍纠察队4最终季

最近下美剧越来越难,但发现B站却啥都有(除了删除打码问题没办法),如果能在TV上看B站这些片源就好了。 没想到还真行,只要手机投屏即可,哈。 刚看了前2集,不错,那味道还在,希望有个好结局。