微博上说 npm 咋滴了? - V2EX
V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
wjfz
V2EX    Node.js

微博上说 npm 咋滴了?

  •  2
     
  •   wjfz 2016-03-24 00:00:33 +08:00 10153 次点击
    这是一个创建于 3501 天前的主题,其中的信息可能已经有所发展或是发生改变。
    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 Koulu unpublished more than 250 of his modules from NPM
    Unfortunately, one of those dependencies was left-pad.

    Azer Koulu 是作者吧?
    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     Solana     5263 人在线   最高记录 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 49ms UTC 08:09 PVG 16:09 LAX 01:09 JFK 04:09
    Do have faith in what you're doing.
    ubao msn snddm index pchome yahoo rakuten mypaper meadowduck bidyahoo youbao zxmzxm asda bnvcg cvbfg dfscv mmhjk xxddc yybgb zznbn ccubao uaitu acv GXCV ET GDG YH FG BCVB FJFH CBRE CBC GDG ET54 WRWR RWER WREW WRWER RWER SDG EW SF DSFSF fbbs ubao fhd dfg ewr dg df ewwr ewwr et ruyut utut dfg fgd gdfgt etg dfgt dfgd ert4 gd fgg wr 235 wer3 we vsdf sdf gdf ert xcv sdf rwer hfd dfg cvb rwf afb dfh jgh bmn lgh rty gfds cxv xcv xcs vdas fdf fgd cv sdf tert sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf sdf shasha9178 shasha9178 shasha9178 shasha9178 shasha9178 liflif2 liflif2 liflif2 liflif2 liflif2 liblib3 liblib3 liblib3 liblib3 liblib3 zhazha444 zhazha444 zhazha444 zhazha444 zhazha444 dende5 dende denden denden2 denden21 fenfen9 fenf619 fen619 fenfe9 fe619 sdf sdf sdf sdf sdf zhazh90 zhazh0 zhaa50 zha90 zh590 zho zhoz zhozh zhozho zhozho2 lislis lls95 lili95 lils5 liss9 sdf0ty987 sdft876 sdft9876 sdf09876 sd0t9876 sdf0ty98 sdf0976 sdf0ty986 sdf0ty96 sdf0t76 sdf0876 df0ty98 sf0t876 sd0ty76 sdy76 sdf76 sdf0t76 sdf0ty9 sdf0ty98 sdf0ty987 sdf0ty98 sdf6676 sdf876 sd876 sd876 sdf6 sdf6 sdf9876 sdf0t sdf06 sdf0ty9776 sdf0ty9776 sdf0ty76 sdf8876 sdf0t sd6 sdf06 s688876 sd688 sdf86