这就是一个 34760 Star 的 Javascript 库该有的表现?

2017-12-20 10:31:07 +08:00
 lihongjie0209

var now = moment()
undefined
var startOfMonth = now.startOf("month")
undefined
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Fri Dec 01 2017 00:00:00 GMT+0800 (China Standard Time), _z: null}
var endOfMonth = now.endOf("month")
undefined
endOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
startOfMonth
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
now
u {_isAMomentObject: true, _isUTC: false, _locale: l, _d: Sun Dec 31 2017 23:59:59 GMT+0800 (China Standard Time), _z: null}
11065 次点击
所在节点    问与答
108 条回复
topgrd
2017-12-20 16:00:19 +08:00
楼主可以看看 moment 团队新出的一个日期时间库 luxon.
wee911
2017-12-20 16:09:31 +08:00
我在用 moment 的时候,总觉得 api 不顺手,好怪,每次要看文档,原来是这原因
wekw
2017-12-20 16:18:57 +08:00
一个 Java 程序员,觉得某个 JavaScript 库“应该”符合某种不明所以的规范,所以开喷。

就像:

一个坦克驾驶员跑到飞机驾驶舱里说你们怎么没有左右方向杆呀,这样飞机怎么拐弯呀?

楼主还扯上了“本来不想加附言, 感觉 v2 水平能看懂, 失算”,这种廉价的优越感,楼主要反省。
overflowHidden
2017-12-20 17:15:40 +08:00
为什么还有强行拉 jquery 出来鞭尸的。。。照这么说天下框架一般黑
DualWield
2017-12-20 17:24:37 +08:00
lz 一开始并没有把问题说明白,导致一开始的楼都没看懂 lz 的意思,就乱喷一通,v2 的人真的要学习一下礼貌。

ps:我支持 lz 的观点
VYSE
2017-12-20 17:28:47 +08:00
觉得这样的设计碰坑后才后知后觉它是 mutable 的一般人都会很不爽
lovedebug
2017-12-20 17:34:04 +08:00
支持,moment 的日期对象可变在转换中挺麻烦
lihongjie0209
2017-12-20 17:37:19 +08:00
@DualWield #65 我的错
lihongjie0209
2017-12-20 17:39:34 +08:00
@wekw #63 这个不明所以的规范写在<重构>中, 写在<代码整洁之道>中, 写在 UncleBob 的每次演讲稿中, 不好意思, 有给你讲了三个不明就里的名词
wekw
2017-12-20 18:01:25 +08:00
@lihongjie0209 我时常告诫自己,廉价的优越感会让自己变 low。您扪心自问一下,发这个帖子的目的是什么?
wekw
2017-12-20 18:05:03 +08:00
@lihongjie0209 UncleBob 可能是 Java 程序员的 Uncle,可能他说的话有普适性,那就代表着别的方式都是错的吗?请再看一遍我上一个回复里的问题,问问自己。我也从技术角度回复一下:JavaScript 是 Lisp 在浏览器里的再生,类就是对象,对象就是方法,方法就是类,本就是拥有万千姿态的函数式语言,不是 OO,更不是严格 OO。
Mcatt
2017-12-20 18:07:28 +08:00
要不楼主看看这个库: https://date-fns.org/
linjianru
2017-12-20 19:08:14 +08:00
你提的确实是一个问题。

但你火冒三丈的标题就有些过分了。

如果你付了钱给 moment 买了他们的代码,结果让你很失望,你骂得再难听都没问题。但对于一个完全免费的开源项目,如此的指责只会让人觉得你很刻薄。

建议楼主换位思考。
maomo
2017-12-20 19:14:35 +08:00
@wekw 为什么说 JavaScript 是 Lisp 在浏览器里的再生?还请指教
jin5354
2017-12-20 19:29:48 +08:00
当众喷一个服务多年的开源免费时间库,这就是一个高贵卓越的后端程序员应有的表现
zthxxx
2017-12-20 19:37:11 +08:00
@Mcatt #72 我也推荐尝试 date-fns 这个库

大概就是 Moment 中 mutable 的问题才让 date-fns 重复这个轮子的,和楼主喷的点一样

https://github.com/date-fns/date-fns/issues/275#issuecomment-264934189
lguan
2017-12-20 20:08:08 +08:00
提的问题没错,提的方法方式不对,`date-fns`就是一个正确的做法,要么按照文档要,要么不用,换一个,水平够就写一个,哪怕是要喷,github 里面也可以讨论,人家也开 blog 专门说了缘由 ,在这乱喷一通,不觉得 v2 的人有什么问题,我们不仅仅要学怎么做好软件设计,怎么做人也很重要吧
lihongjie0209
2017-12-20 20:26:42 +08:00
@lguan #77 其实吧, 我到是对这个库不太关心, 只是对 javascript 的生态圈比较失望.
lihongjie0209
2017-12-20 20:27:45 +08:00
@linjianru #73 其实吧, 我到是对这个库不太关心, 只是对 javascript 的生态圈比较失望. 这么多 star 按理说应该不错的, 没想到啊.
lihongjie0209
2017-12-20 20:43:36 +08:00
@jin5354 #75 我喷的不是这个库, 是 js, 是 js 的生态圈.

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/416195

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX