menc
V2EX  ›  问与答

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

  •  
  •   menc · Mar 24, 2016 · 4575 views
    This topic created in 3747 days ago, the information mentioned may be changed or developed.

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

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

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

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

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

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

    这 和前端什么关系?

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

    https://github.com/sindresorhus/noop3
    sox
        2
    sox  
       Mar 24, 2016
    有传言称, Twitter 将成为世界最大包管理系统(笑

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

    Mutoo
        23
    Mutoo  
       Mar 24, 2016
    用 twitter 还不如用 ipfs.io
    msg7086
        24
    msg7086  
       Mar 24, 2016
    stackoverflow 都已经成为模块库了。
    https://stacksnippet.com
    https://github.com/rinas7/StackOverflowSnippets

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

    回楼主的问题:

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

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

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

    我的观点是,对代码请严肃一点,认真一点,这是广大程序员赖以生存的工具和搭建高楼大厦的基石,请不要像对待玩具一样对待它
    jybox
        29
    jybox  
       Mar 24, 2016
    @menc 我不能同意「功能有限(或短)就等于不严肃(或不负责任)」这一点。
    DravenJohnson
        30
    DravenJohnson  
       Mar 24, 2016
    说到 CPP ,我还不理解为什么 VS2015 不支持 Win7 了呢
    msg7086
        31
    msg7086  
       Mar 24, 2016
    哇咔咔,开口闭口就是 block ,楼下你们还继续讨论么,感觉回这种人的帖子简直就是浪费时间。
    @plqws 说的很好, block 了一点不可惜。
    66beta
        32
    66beta  
       Mar 25, 2016
    所以,需要 lodash 这样的工具库
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Solana   ·   3052 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 64ms · UTC 08:09 · PVG 16:09 · LAX 01:09 · JFK 04:09
    ♥ Do have faith in what you're doing.