V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
V2EX 提问指南
menc
V2EX  ›  问与答

不太懂你们前端和所谓的 one-line module

  •  
  •   menc · 2016-03-24 13:20:39 +08:00 · 4057 次点击
    这是一个创建于 3168 天前的主题,其中的信息可能已经有所发展或是发生改变。

    leftpad 这种,一个函数搞一个模块,你们说用的多,所以搞一个。 那么是不是字符串每个常用的语言不存在的函数,你们都要搞一个 module 出来?

    那么假如,我要把 node 用在科学计算,我是应该用到一个公式就写一个 module 呢:

    • math-sigmoid
    • math-tanh
    • math-entropy
    • ...

    还是,我应该慎重一点,把他们打包成一个 math-util ?

    回到 string 的话题,是应该弄一个 string-util ,然后欢迎大家来贡献代码呢? 还是应该弄一个 letfpad , rightpad , middlepad (仅仅举例)等等等等一堆 module 呢?

    32 条回复    2016-03-25 13:15:44 +08:00
    sox
        1
    sox  
       2016-03-24 13:25:13 +08:00
    你没搞清楚上下文啊,你如果永远只维护一个模块的话干嘛分成无数个小模块呢。

    这 和前端什么关系?

    你模块化的初衷是方便自己使用,谁一开始就是为了 让大家来贡献代码的,你知道 GitHub Gist 吗。

    https://github.com/sindresorhus/noop3
    sox
        2
    sox  
       2016-03-24 13:29:14 +08:00
    有传言称, Twitter 将成为世界最大包管理系统(笑

    https://gist.github.com/rauchg/5b032c2c2166e4e36713
    fds
        3
    fds  
       2016-03-24 13:54:29 +08:00
    都可以。大库分拆、小库合并都很常见。懒得用别人的就自己写,懒得自己写就用别人的,有啥关系。
    SpicyCat
        4
    SpicyCat  
       2016-03-24 14:24:22 +08:00
    当然可以按你的设想来,甚至你现在就可以动手做。但是开源软件的特点是不是“设计”,而是逐渐“进化”的。相信当初 leftpad 也没想到会那么流行,既然流行了就说明大部分人认可这种形式。
    如果你的包更好,并且能流行起来,那就按你的来喽。
    ianva
        5
    ianva  
       2016-03-24 14:59:37 +08:00
    leftpad 这个库有这么多 star 真是奇葩, underscore.string 的项目里就有单独拎出来有什么意义么,就 10 行代码随手就写的出的,如果说懒得鞋直接引用通用性的 underscore 就好了
    ChefIsAwesome
        6
    ChefIsAwesome  
       2016-03-24 15:03:57 +08:00
    v2 真是奇葩。国外讨论的重点是 npm 的中心化问题。这边在讨论人家区区几行代码配不配发布到 npm 上。
    rokeyzki
        7
    rokeyzki  
       2016-03-24 15:08:25 +08:00   ❤️ 2
    @ChefIsAwesome 国人的尿性,老美喜欢讨论规则,我们喜欢讨论资格
    junp
        8
    junp  
       2016-03-24 15:18:04 +08:00 via Android
    @ianva web 端,如果只用到 underscore 的一个函数,就要加载整个 underscore ,不合适。
    Pastsong
        9
    Pastsong  
       2016-03-24 15:19:31 +08:00
    menc
        10
    menc  
    OP
       2016-03-24 15:22:21 +08:00   ❤️ 1
    @ChefIsAwesome
    奇葩?
    你知道写 CPP 如果一个库文件只有一个函数,你会被打的么?
    一个中心化不中心化的包管理器是自由软件精神的问题。
    一个一个函数甚至一行代码的 module 是软件工程的问题,你怎么就这么有优越感呢,外国的月亮就是圆的?
    ChefIsAwesome
        11
    ChefIsAwesome  
       2016-03-24 15:31:27 +08:00
    @menc 谁打?你打,我打,还是找个评测组每天审核想在 npm 上发包的人,谁代码写的少就打谁?忽略重点,胡搅蛮缠。
    menc
        12
    menc  
    OP
       2016-03-24 15:33:42 +08:00
    @ChefIsAwesome 已 block
    ianva
        13
    ianva  
       2016-03-24 15:42:07 +08:00   ❤️ 1
    @junp 当然也可以如 lodash.xxx 这种发布,但如果单一来,太散,之前 NPM 3 后随便构建一个项目,点开 node_module 的时候卡了一下, 自习一看,超过 600 个目录。。
    100M+ 的大小,真有点过了,不说维护什么的,如果第三方库分散成这样,你找个文档都是个费劲的事
    当然这个趋势下去肯定会有个把 node_module 下所有包的文档打包成一个 Dash 的项目出来
    ianva
        14
    ianva  
       2016-03-24 15:54:44 +08:00
    自己也写过 one-line module https://github.com/ianva/git-rill
    当时在 V2EX 上还被嘲讽了
    hronro
        15
    hronro  
       2016-03-24 16:12:13 +08:00
    那个 noop ,真的有必要吗
    sox
        16
    sox  
       2016-03-24 16:38:53 +08:00
    hronro
        17
    hronro  
       2016-03-24 16:52:15 +08:00
    @sox 没有看不起这种做法的意思,只是我现在确实还不能理解
    sox
        18
    sox  
       2016-03-24 16:58:22 +08:00
    @hronro 并不是指你,大概这个意思而已。😂
    akira
        19
    akira  
       2016-03-24 17:32:33 +08:00
    目前的情况应该是说,人们是挺喜欢 one line module 的,
    至于为什么,这样好不好,那是另一回事了。
    plqws
        20
    plqws  
       2016-03-24 18:24:35 +08:00
    楼主就是来引战的,看楼主的回复,说白了就是来开嘴炮嘲讽现代 JavaScript 大生态和 JavaScript 开发者而已。已 Block 楼主,我一直很不主张 Block ,但是嘛,翻了翻楼主的帖子,看起来也不像是那种会发出什么有价值内容的人,所以 Block 了并不可惜。好自为之
    Biwood
        21
    Biwood  
       2016-03-24 18:51:04 +08:00
    楼主是 Java 程序员吧,想到那个笑话,“面向对象编程的问题在于,你想要一根香蕉,结果却得到了一只猩猩和整个森林”
    yangxiongwei
        22
    yangxiongwei  
       2016-03-24 18:56:43 +08:00
    @Biwood 想到了这个

    Mutoo
        23
    Mutoo  
       2016-03-24 19:43:49 +08:00
    用 twitter 还不如用 ipfs.io
    msg7086
        24
    msg7086  
       2016-03-24 20:35:37 +08:00
    stackoverflow 都已经成为模块库了。
    https://stacksnippet.com
    https://github.com/rinas7/StackOverflowSnippets

    而且不知道为什么要莫名其妙扯出 C++。这帖子特么有说到过 C++?
    menc
        25
    menc  
    OP
       2016-03-24 21:38:39 +08:00
    @msg7086 谢谢 block
    menc
        26
    menc  
    OP
       2016-03-24 21:39:08 +08:00
    @Biwood 不是很懂 java
    jybox
        27
    jybox  
       2016-03-24 21:51:12 +08:00
    @ChefIsAwesome 我觉得楼主的问题同样值得讨论,当然楼主的语气不是很好,比如反问用得太多了。

    回楼主的问题:

    从使用者的角度,这样做的意义是前端对代码体积非常敏感,希望最后发布的代码中只包括自己真正被用到的部分,虽然可以基于模块来拆分(例如 Lodash 既提供整体发行包,又为每个函数提供单独的包或单独的模块,方便开发者选择性地使用),但相比之下分包要显得简单易行一些。

    从作者的角度,可能作者一开始只需要一个能完成特定的、很小的工作的库,但没有找到现成的,于是自己写了一个并发布出去。如果你要求作者一定要凑齐所有相关的功能再发布,未免要求太高了,像 Lodash 这种项目,必然是要有专门的人,像对待一项独立的工作一样去维护才能成型的,其实 Lodash 可能就是楼主所希望看到的样子。
    menc
        28
    menc  
    OP
       2016-03-24 21:59:20 +08:00
    @jybox
    在我的理解,既然功能有限,为什么不内部自己使用,而非要发布出去呢?
    自己使用的步骤: 自己写好,引用
    发布出去的步骤:自己写好后,先写 manifest ,再上传上去,在代码里 require , build 的时候再下载下来使用。

    作为一个代码洁癖,我觉得向库中随便添加随便的功能有限的代码,本身就是一种不负责任的表现。没有足够优秀的代码,却拥有被万众关注的梦。

    我的观点是,对代码请严肃一点,认真一点,这是广大程序员赖以生存的工具和搭建高楼大厦的基石,请不要像对待玩具一样对待它
    jybox
        29
    jybox  
       2016-03-24 22:23:40 +08:00
    @menc 我不能同意「功能有限(或短)就等于不严肃(或不负责任)」这一点。
    DravenJohnson
        30
    DravenJohnson  
       2016-03-24 22:28:21 +08:00
    说到 CPP ,我还不理解为什么 VS2015 不支持 Win7 了呢
    msg7086
        31
    msg7086  
       2016-03-24 23:03:21 +08:00
    哇咔咔,开口闭口就是 block ,楼下你们还继续讨论么,感觉回这种人的帖子简直就是浪费时间。
    @plqws 说的很好, block 了一点不可惜。
    66beta
        32
    66beta  
       2016-03-25 13:15:44 +08:00
    所以,需要 lodash 这样的工具库
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2698 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 24ms · UTC 15:31 · PVG 23:31 · LAX 07:31 · JFK 10:31
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.