V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjfz
V2EX  ›  Node.js

微博上说 npm 咋滴了?

  •  2
     
  •   wjfz · 2016-03-24 00:00:33 +08:00 · 9690 次点击
    这是一个创建于 3194 天前的主题,其中的信息可能已经有所发展或是发生改变。
    http://weibo.com/5042408187/DnCD72Bev

    后端随便一个语言个个比我年纪大。
    前端近几年出了很多搞不懂的东西,逼格一下子高了许多。
    可有些东西甚至还没来及看就已经被摒弃了。。

    实在是搞不懂。
    第 1 条附言  ·  2016-03-24 11:31:42 +08:00
    APPEND 一段可能会引发争执的内容。
    平时我说话很注意避免起争执的,但这块是真心不懂,想请前端大神们解答下。

    作为用户,我只希望在我浏览器跑得越快越好,不需要加载一些有的没的。我电脑性能的提升是为了跑得更快,而不是交给一堆 js 去浪费。百度地图不知道用了什么新科技,在搜狗浏览器下已经卡到不行了, Chrome 倒还流畅。但只要一开 map.baidu.com ,浏览器内存分分钟增加几百 M 。保守一点,这有可能是搜狗浏览器和我电脑的问题。

    私以为前端,就是解决后端做不到的事,之前的 JQuery 之流如果太 low 如果满足不了需求,那可以自己按业务需求造轮子啊。

    近几年, Nodejs 、 React 、 Vue 、 Grunt 风起云涌,轮子已经比车跑得快了。车都没跟上轮子的意义何在。

    工具,旨在提高效率。但如果工具们让更多的前端新人感到迷茫,用起来反而有更高的学习成本,有更大的风险,那么意义又何在。

    不建议起争执,我只是心中有些疑惑想请前端大神们解答下。
    75 条回复    2016-03-24 16:58:01 +08:00
    zhangchioulin
        1
    zhangchioulin  
       2016-03-24 00:07:30 +08:00
    我也想知道。。。。。
    Twinkle
        2
    Twinkle  
       2016-03-24 00:08:13 +08:00
    wico77
        3
    wico77  
       2016-03-24 00:08:56 +08:00
    求前端长期合作
    yangxin0
        4
    yangxin0  
       2016-03-24 00:09:15 +08:00 via iPhone
    @zhangchioulin web 呀,用户的接口,这部分就是体力活所以前端需求量大。
    ipconfiger
        5
    ipconfiger  
       2016-03-24 00:11:01 +08:00
    wjfz
        7
    wjfz  
    OP
       2016-03-24 00:14:14 +08:00
    @Twinkle
    PHP 的包管理是加载到项目目录运行的,这个是每次从线上加载?
    zhong81243232
        8
    zhong81243232  
       2016-03-24 00:15:00 +08:00
    我们前端圈真乱。
    wjfz
        9
    wjfz  
    OP
       2016-03-24 00:16:07 +08:00   ❤️ 1
    @zhong81243232
    蛮同情前端的,那么多那么复杂的东西要学。
    好好写个 js css 就足够了啊……艾玛我不懂我瞎说的
    wjfz
        10
    wjfz  
    OP
       2016-03-24 00:18:13 +08:00
    @ipconfiger
    PHP 的包管理是加载到本地的,前端这个是每次从 github 加载?
    yangqi
        11
    yangqi  
       2016-03-24 00:20:26 +08:00
    @wjfz 一样是加载到项目目录,但是现在部署编译就会出错,而且被撤除的包很有可能被未知的人重新占用上传木马包,这个波及面就很广了
    wjfz
        12
    wjfz  
    OP
       2016-03-24 00:21:26 +08:00
    @yangqi
    搜嘎,也就是说线上正在跑的基本不受影响咯?
    lightening
        13
    lightening  
       2016-03-24 00:24:25 +08:00 via iPhone
    @wjfz 部署的时候会去下载所有的包,所以不能部署了吧
    crabRunning
        14
    crabRunning  
       2016-03-24 00:26:35 +08:00 via Android
    刚刚介入前端,情不自禁的感叹,这他妈怎么那么多幺蛾子
    YuJianrong
        15
    YuJianrong  
       2016-03-24 00:27:01 +08:00
    蛮同情后端的,一直都没什么新东西……
    think2011
        16
    think2011  
       2016-03-24 00:27:32 +08:00
    我们前端圈真乱
    wjfz
        17
    wjfz  
    OP
       2016-03-24 00:30:11 +08:00
    @crabRunning
    @think2011
    感觉上大学这几年除了超级多东西,真的是还没来得及看就已经过时了。


    @YuJianrong
    2333333
    汉字几千年都是汉字,但年年都有新用法。
    jybox
        18
    jybox  
       2016-03-24 00:34:35 +08:00   ❤️ 3
    >前端近几年出了很多搞不懂的东西,逼格一下子高了许多。
    作为一个 Node.js 服务器端工程师,表示 NPM 并不仅是前端在使用,比如 left-pad 这个包和浏览器并没有直接关系。

    >PHP 的包管理是加载到项目目录运行的,这个是每次从线上加载?
    PHP 的包难道不是从仓库下载的么?如果作者把包从 packagist (不太理解 packagist 是否允许撤下已发布的包)或 GitHub 上撤下也是一样的。

    >民心已失。我猜很快会有一个新的完全开放的平台出来。
    我个人认为只是 @azer 太矫情了而已, NPM 对于解决包名纠纷有很明确的规则( https://docs.npmjs.com/misc/disputes ),这是一次很透明的操作。如果对方持有商标,我相信在大部分平台都是可以拿到对应的名字的。

    >npm 目前的机制基本无法处理这次危机,超过 250 个项目被移除,其他依赖项目不仅需要寻找替代品,还要防范其他人伪造同名库。
    一方面可以修改 unpublish 包的规则(满足特定规则才可以 unpublish 已发布的版本),如果作者的包使用一个自由软件许可证发布的话,从法律上来说,不允许删除也是完全可行的。另一方面可以继续推 Scoped packages ( https://docs.npmjs.com/misc/scope ),像 GitHub 一样以自己的用户名为前缀,虽然用户名可能也有纠纷,但应该会比包名的纠纷少一点。
    wjfz
        19
    wjfz  
    OP
       2016-03-24 00:36:08 +08:00
    @jybox
    也就是说不会影响线上跑的咯?
    yyfearth
        20
    yyfearth  
       2016-03-24 03:22:20 +08:00   ❤️ 1
    @wjfz 已经在跑的肯定没事
    只有重新部署的时候会出问题
    zhangchioulin
        21
    zhangchioulin  
       2016-03-24 03:47:30 +08:00
    让我安安静静做一个 iOS 的美男子。。。
    @yangxin0
    Slienc7
        22
    Slienc7  
       2016-03-24 07:25:44 +08:00
    @jybox 据某新闻说, NPM 已经 un-unpublish 那个包含 left-pad 的包?
    kn007
        23
    kn007  
       2016-03-24 07:41:14 +08:00
    @xgowex 是作者吧。
    Slienc7
        24
    Slienc7  
       2016-03-24 07:58:08 +08:00
    zhujinliang
        25
    zhujinliang  
       2016-03-24 08:13:06 +08:00 via iPhone
    我一直对 node 这帮人搞不懂,一个 leftpad 也有必要做成包?两三行代码的事,你需要这个功能为什么不是写在 util.js 里而是引入个别人的包?
    kn007
        26
    kn007  
       2016-03-24 08:16:24 +08:00
    @xgowex A couple of hours ago, Azer Koçulu unpublished more than 250 of his modules from NPM
    Unfortunately, one of those dependencies was left-pad.

    Azer Koçulu 是作者吧?
    Slienc7
        27
    Slienc7  
       2016-03-24 08:22:20 +08:00
    @kn007 "un-un" <-> "un" 我们俩说得并不是同一个。
    ChefIsAwesome
        28
    ChefIsAwesome  
       2016-03-24 08:27:20 +08:00
    66beta
        29
    66beta  
       2016-03-24 08:34:13 +08:00
    npm 就是包太多了,各种依赖,当然 php 的 composer 也一样
    很多功能就应该集成到内核里去

    去中心化的包管理器,也有弊端,没有统一的维护啊
    yyfearth
        30
    yyfearth  
       2016-03-24 08:53:27 +08:00
    @66beta 任何的包管理器都是这样啊
    所以才会有很多人会把各种依赖直接手动包含到项目里面

    比如 Java 和 Android 很多人都喜欢直接把 Jar 包包含在项目里面
    甚至直接提交的代码库里面
    NodeJs 也有不少人会直接把 node_modules 直接包含在代码库里面
    janxin
        31
    janxin  
       2016-03-24 08:55:41 +08:00 via iPhone
    nodejs 依赖问题终于爆发了吗…
    janxin
        32
    janxin  
       2016-03-24 08:57:57 +08:00 via iPhone
    @yyfearth 这样的问题不是代码体积几何级膨胀吗
    dtysky
        33
    dtysky  
       2016-03-24 09:04:01 +08:00
    看来我能自己造的轮子就不随便用 lib 还是有道理的。。。不过最麻烦的还是构建工具
    Phariel
        34
    Phariel  
       2016-03-24 09:04:17 +08:00 via iPhone
    讲道理 我认为 npm 就不应该有 unpublish 的机制 这次的事就是个教训 得轮子者岂不是掌控一切?
    rannnn
        35
    rannnn  
       2016-03-24 09:07:58 +08:00
    LOL 昨天公司所有 build 全是红的, notice 乱飞,好不壮观
    abcdabcd987
        36
    abcdabcd987  
       2016-03-24 09:14:10 +08:00
    事件梳理(按时间序):一致力于开源社区的程序员 Azer 的某 npm module 因为和一公司重名,被 npm 强行更换了所有权,于是他愤然从 npm 中撤下了所有自己的 module ,其中包括只有 11 行代码的 left-pad 。于是,把它作为依赖的众多库纷纷编译失败,其中包括 React, Babel 等。有人写了篇文章批评现在程序员都不懂得写程序了吗?在 HN 上引发热议。

    https://medium.com/@azerbike/i-ve-just-liberated-my-modules-9045c06be67c#.403drisws

    https://news.ycombinator.com/item?id=11348798
    est
        37
    est  
       2016-03-24 09:19:55 +08:00
    1. npm 包数量远超 PYPI, CPAN 。原来是通过这种方式。。。

    2. theregister 居然都能报道这新闻,国内媒体汗颜啊。
    yyfearth
        38
    yyfearth  
       2016-03-24 09:21:19 +08:00
    @Phariel 其实不一定有用
    如果不可以 unpublish
    作者也可以随时换上一个爆掉的版本 并且标示为版本兼容
    比如大家用了 “~1.0.0 ” 然后他出个 1.0.1 兼容 1.0.0 那么默认情况下 结果也是一样的
    除非有人手动锁定版本 “ 1.0.0 ” 但是 我记得 npm 允许对已发布的版本做强行修正
    比如 发一个爆掉的版本 仍然是 1.0.0
    那么你也没办法了

    除非像 svn 那样 完全禁止修改历史
    JenJieJu
        39
    JenJieJu  
       2016-03-24 09:31:11 +08:00
    咱圈真乱。。。。。。
    youxiachai
        40
    youxiachai  
       2016-03-24 09:38:37 +08:00
    @zhujinliang 怎么说呢。。 unix 的哲学问题

    这次的问题。。不是 left-pad (作者还有其他 200 多个库呢,而且作者也是早期 npm 活跃用户。。),不是说代码少。。这个库就没价值(这个是一个价值观的问题,如果大家都是可信的,我又何必写一个 util 自己维护呢?)。这次的危机算是一个潜在问题的大爆发

    怎么说呢。这次的危机到今天才爆发。。可以说明之前大家还是挺自律的。。。
    Pythagodzilla
        41
    Pythagodzilla  
       2016-03-24 09:45:20 +08:00
    sox
        42
    sox  
       2016-03-24 09:46:04 +08:00
    BOYPT
        43
    BOYPT  
       2016-03-24 09:47:52 +08:00
    之前来说 NMP 的包管理是发展最快最成功的,以至于其他语言都向其学习,不就是因为 npm 是集中管理;好了现在又在说集中管理的弊端,那你们学学 php 又 perl 又 pecl 又 composer 吧,科科
    crabRunning
        44
    crabRunning  
       2016-03-24 09:51:33 +08:00
    昨天好死不死把 node_modules 删了,结果晚上装不上了 23333
    mahone3297
        45
    mahone3297  
       2016-03-24 09:55:24 +08:00
    @jybox
    >PHP 的包管理是加载到项目目录运行的,这个是每次从线上加载?
    PHP 的包难道不是从仓库下载的么?如果作者把包从 packagist (不太理解 packagist 是否允许撤下已发布的包)或 GitHub 上撤下也是一样的。

    还是没懂,再请教下。。。 php 的包是从仓库下载的,但是下载后,本地会有缓存。所以,我理解成,已经在跑的项目,都是曾经下载过的,所以没有影响。 npm 是怎么个逻辑?
    est
        46
    est  
       2016-03-24 10:05:59 +08:00
    @sox 说实话, 1 行函数,还真心不如复制粘贴。
    AnyOfYou
        47
    AnyOfYou  
       2016-03-24 10:15:14 +08:00
    奇怪,我 21 小时前发的 http://v2ex.com/t/265720 这个却无人问津...
    sox
        48
    sox  
       2016-03-24 10:17:21 +08:00
    @est up to you
    rming
        49
    rming  
       2016-03-24 10:29:10 +08:00
    贵圈真乱!
    xuwenmang
        50
    xuwenmang  
       2016-03-24 10:43:02 +08:00
    @AnyOfYou 你明显没做记者的天赋。人家的链接里,有危机二字。
    shew2356
        51
    shew2356  
       2016-03-24 10:44:07 +08:00
    @AnyOfYou 人品
    vagary
        52
    vagary  
       2016-03-24 11:02:05 +08:00
    @zhujinliang
    😄,以前瞎聊瞎扯淡的事情终于还是发生了。
    233333333 喜闻乐见。
    不过我手贱这周刚开始看 react 这些前端流行的玩意。。。明天分享还打算聊聊前端这些。。。这咋整一下跑题了。。。 2333333
    fszaer
        53
    fszaer  
       2016-03-24 11:09:28 +08:00
    @mahone3297
    npm 也是啊=。=
    fszaer
        54
    fszaer  
       2016-03-24 11:13:12 +08:00
    @mahone3297
    你理解的没有错,已经把包下载下来的自然没有问题
    就是,大多数源码只保留一个 packages 的清单,当你重新构建,也就是重新吧 packages 落下来的时候会因为包不存在而无法正确构建
    wjfz
        55
    wjfz  
    OP
       2016-03-24 11:13:34 +08:00
    @mahone3297
    是的,上面有人回答了,已经再跑的不受影响,除非重新 update


    @AnyOfYou
    一般人都不会对英文标题敏感的,毕竟非母语。
    下次记得改个标题弄个大新闻😂


    @vagary
    前圈好乱😂 (无恶意
    上大学这几年火了 node react Vue Gulp 各种轮子,我都跟不上轮子了。
    chaegumi
        56
    chaegumi  
       2016-03-24 11:14:28 +08:00
    不知道 php 的 composer 存不存在这类问题,风险挺大的, update 过来的代码是不是 ok 的能保证吗
    xuwenmang
        57
    xuwenmang  
       2016-03-24 11:21:12 +08:00   ❤️ 1
    nodejs
    -> npmjs.COM
    npm is the package manager for javascript.
    $ npm install express




    PHP

    -> getcomposer.ORG
    Dependency Manager for PHP

    -> packagist.ORG
    The PHP Package Repository

    $ composer require monolog/monolog


    一个世界是包管理
    一个世界是依赖管理+包仓库

    开发境界就不一样,后者明显对面向对象的理解要强一点。

    前端啊,你们还是太年轻太简单。

    附注: PHP 是宇宙间最好的语言!
    uxstone
        58
    uxstone  
       2016-03-24 11:22:09 +08:00
    说到底就是 NPM 的员工傻逼!!!
    LeoDev
        59
    LeoDev  
       2016-03-24 11:37:14 +08:00
    贵圈真乱
    66beta
        60
    66beta  
       2016-03-24 11:37:49 +08:00
    @yyfearth http://www.haneycodes.net/npm-left-pad-have-we-forgotten-how-to-program/
    有了包管理器,大家都变懒了,简单的东西搞复杂
    timothyye
        61
    timothyye  
       2016-03-24 11:38:02 +08:00
    后端前来围观,贵圈真乱……
    iwege
        62
    iwege  
       2016-03-24 11:42:49 +08:00
    @chaegumi composer 貌似还有一点 namespace 的概念, npm 的 namespace 是私有模块,记得还要收钱的。
    vagary
        63
    vagary  
       2016-03-24 11:45:57 +08:00
    @crabRunning @wjfz 吓得我立马 tar -zcvf hollyshit.tar.gz node_modules 😂😂😂😂
    zhuziyi
        64
    zhuziyi  
       2016-03-24 11:51:53 +08:00
    其实就是一群后端转前端的人在带动,前端的一个趋势,至于效果怎么样,是不是本末倒置,真要打个大问号。
    wjfz
        65
    wjfz  
    OP
       2016-03-24 12:03:26 +08:00
    @vagary
    😂


    @zhuziyi
    从后端的角度,对于前端各种框架实在是凌乱了。
    TangMonk
        66
    TangMonk  
       2016-03-24 13:16:56 +08:00
    npm 要是有 ruby bundler 那么好用就好了
    rubyvector
        67
    rubyvector  
       2016-03-24 13:17:49 +08:00   ❤️ 1
    像 facebook,ali,tencent,baidu 一类大公司,项目多,需求多,人家为了统一维护,节省人力物力,前端搞些框架,合情合理.

    一些跟屁公司,非得跟着上,用着一些看似高大上的前端技术,用大炮解决着手枪问题.原生 JS 代码处理的问题,给你来些 MVC,mvvc 呀,七七八八.想想看,一步能完成的事,要给你拆开,各种代码调用,效率低下,还要花时间去学,花精力去完善后期框架造成的各种坑,搞不好,要去看框架源码.哪个框架大升级,还得老代码测试,修正,重写...

    小公司很多是让那些高大上公司出来,当构架师的鸟人们坑的.招人难招,还得给高工资 .本来想省时省钱省事,全变成了 GDP 良心投入.
    iniwap
        68
    iniwap  
       2016-03-24 15:13:17 +08:00
    cao 这页面怎么搞的
    xjchenhao
        69
    xjchenhao  
       2016-03-24 15:36:33 +08:00
    @wico77 外包还是做产品?
    wd
        70
    wd  
       2016-03-24 15:53:55 +08:00
    奇怪,为啥只有进了这页面是黑色的?
    wico77
        71
    wico77  
       2016-03-24 16:08:26 +08:00
    @xjchenhao 外包,你技术如何,加个联系方式
    wjfz
        72
    wjfz  
    OP
       2016-03-24 16:09:05 +08:00
    @rubyvector
    敢想敢说👍 跟我想法一样


    @iniwap
    @wd
    分类到 nodejs 节点下了,就有这个奇丑难以阅读的页面样式。。
    fyibmsd
        73
    fyibmsd  
       2016-03-24 16:43:57 +08:00   ❤️ 1
    看到写前端的写单元测试 写 makefile 我就醉了
    Pastsong
        74
    Pastsong  
       2016-03-24 16:47:30 +08:00 via iPhone
    都说是 npm 了怎么还前端前端的
    hkongm
        75
    hkongm  
       2016-03-24 16:58:01 +08:00
    题主先搞明白前端,浏览器, npm 的关系~
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2584 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 27ms · UTC 11:37 · PVG 19:37 · LAX 03:37 · JFK 06:37
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.