leftpad 这种,一个函数搞一个模块,你们说用的多,所以搞一个。 那么是不是字符串每个常用的语言不存在的函数,你们都要搞一个 module 出来?
那么假如,我要把 node 用在科学计算,我是应该用到一个公式就写一个 module 呢:
还是,我应该慎重一点,把他们打包成一个 math-util ?
回到 string 的话题,是应该弄一个 string-util ,然后欢迎大家来贡献代码呢? 还是应该弄一个 letfpad , rightpad , middlepad (仅仅举例)等等等等一堆 module 呢?
1
sox 2016-03-24 13:25:13 +08:00
你没搞清楚上下文啊,你如果永远只维护一个模块的话干嘛分成无数个小模块呢。
这 和前端什么关系? 你模块化的初衷是方便自己使用,谁一开始就是为了 让大家来贡献代码的,你知道 GitHub Gist 吗。 https://github.com/sindresorhus/noop3 |
2
sox 2016-03-24 13:29:14 +08:00
|
3
fds 2016-03-24 13:54:29 +08:00
都可以。大库分拆、小库合并都很常见。懒得用别人的就自己写,懒得自己写就用别人的,有啥关系。
|
4
SpicyCat 2016-03-24 14:24:22 +08:00
当然可以按你的设想来,甚至你现在就可以动手做。但是开源软件的特点是不是“设计”,而是逐渐“进化”的。相信当初 leftpad 也没想到会那么流行,既然流行了就说明大部分人认可这种形式。
如果你的包更好,并且能流行起来,那就按你的来喽。 |
5
ianva 2016-03-24 14:59:37 +08:00
leftpad 这个库有这么多 star 真是奇葩, underscore.string 的项目里就有单独拎出来有什么意义么,就 10 行代码随手就写的出的,如果说懒得鞋直接引用通用性的 underscore 就好了
|
6
ChefIsAwesome 2016-03-24 15:03:57 +08:00
v2 真是奇葩。国外讨论的重点是 npm 的中心化问题。这边在讨论人家区区几行代码配不配发布到 npm 上。
|
7
rokeyzki 2016-03-24 15:08:25 +08:00 2
@ChefIsAwesome 国人的尿性,老美喜欢讨论规则,我们喜欢讨论资格
|
8
junp 2016-03-24 15:18:04 +08:00 via Android
@ianva web 端,如果只用到 underscore 的一个函数,就要加载整个 underscore ,不合适。
|
9
Pastsong 2016-03-24 15:19:31 +08:00
|
10
menc OP @ChefIsAwesome
奇葩? 你知道写 CPP 如果一个库文件只有一个函数,你会被打的么? 一个中心化不中心化的包管理器是自由软件精神的问题。 一个一个函数甚至一行代码的 module 是软件工程的问题,你怎么就这么有优越感呢,外国的月亮就是圆的? |
11
ChefIsAwesome 2016-03-24 15:31:27 +08:00
@menc 谁打?你打,我打,还是找个评测组每天审核想在 npm 上发包的人,谁代码写的少就打谁?忽略重点,胡搅蛮缠。
|
12
menc OP @ChefIsAwesome 已 block
|
13
ianva 2016-03-24 15:42:07 +08:00 1
@junp 当然也可以如 lodash.xxx 这种发布,但如果单一来,太散,之前 NPM 3 后随便构建一个项目,点开 node_module 的时候卡了一下, 自习一看,超过 600 个目录。。
100M+ 的大小,真有点过了,不说维护什么的,如果第三方库分散成这样,你找个文档都是个费劲的事 当然这个趋势下去肯定会有个把 node_module 下所有包的文档打包成一个 Dash 的项目出来 |
14
ianva 2016-03-24 15:54:44 +08:00
自己也写过 one-line module https://github.com/ianva/git-rill
当时在 V2EX 上还被嘲讽了 |
15
hronro 2016-03-24 16:12:13 +08:00
那个 noop ,真的有必要吗
|
19
akira 2016-03-24 17:32:33 +08:00
目前的情况应该是说,人们是挺喜欢 one line module 的,
至于为什么,这样好不好,那是另一回事了。 |
20
plqws 2016-03-24 18:24:35 +08:00
楼主就是来引战的,看楼主的回复,说白了就是来开嘴炮嘲讽现代 JavaScript 大生态和 JavaScript 开发者而已。已 Block 楼主,我一直很不主张 Block ,但是嘛,翻了翻楼主的帖子,看起来也不像是那种会发出什么有价值内容的人,所以 Block 了并不可惜。好自为之
|
21
Biwood 2016-03-24 18:51:04 +08:00
楼主是 Java 程序员吧,想到那个笑话,“面向对象编程的问题在于,你想要一根香蕉,结果却得到了一只猩猩和整个森林”
|
22
yangxiongwei 2016-03-24 18:56:43 +08:00
|
24
msg7086 2016-03-24 20:35:37 +08:00
stackoverflow 都已经成为模块库了。
https://stacksnippet.com https://github.com/rinas7/StackOverflowSnippets 而且不知道为什么要莫名其妙扯出 C++。这帖子特么有说到过 C++? |
27
jybox 2016-03-24 21:51:12 +08:00
@ChefIsAwesome 我觉得楼主的问题同样值得讨论,当然楼主的语气不是很好,比如反问用得太多了。
回楼主的问题: 从使用者的角度,这样做的意义是前端对代码体积非常敏感,希望最后发布的代码中只包括自己真正被用到的部分,虽然可以基于模块来拆分(例如 Lodash 既提供整体发行包,又为每个函数提供单独的包或单独的模块,方便开发者选择性地使用),但相比之下分包要显得简单易行一些。 从作者的角度,可能作者一开始只需要一个能完成特定的、很小的工作的库,但没有找到现成的,于是自己写了一个并发布出去。如果你要求作者一定要凑齐所有相关的功能再发布,未免要求太高了,像 Lodash 这种项目,必然是要有专门的人,像对待一项独立的工作一样去维护才能成型的,其实 Lodash 可能就是楼主所希望看到的样子。 |
28
menc OP @jybox
在我的理解,既然功能有限,为什么不内部自己使用,而非要发布出去呢? 自己使用的步骤: 自己写好,引用 发布出去的步骤:自己写好后,先写 manifest ,再上传上去,在代码里 require , build 的时候再下载下来使用。 作为一个代码洁癖,我觉得向库中随便添加随便的功能有限的代码,本身就是一种不负责任的表现。没有足够优秀的代码,却拥有被万众关注的梦。 我的观点是,对代码请严肃一点,认真一点,这是广大程序员赖以生存的工具和搭建高楼大厦的基石,请不要像对待玩具一样对待它 |
30
DravenJohnson 2016-03-24 22:28:21 +08:00
说到 CPP ,我还不理解为什么 VS2015 不支持 Win7 了呢
|
31
msg7086 2016-03-24 23:03:21 +08:00
哇咔咔,开口闭口就是 block ,楼下你们还继续讨论么,感觉回这种人的帖子简直就是浪费时间。
@plqws 说的很好, block 了一点不可惜。 |
32
66beta 2016-03-25 13:15:44 +08:00
所以,需要 lodash 这样的工具库
|