随着各种前端 MVVM, MVC 框架的流行, jQuery, zepto.js 等传统 JS 库是否有走向边缘的趋势? - V2EX

随着各种前端 MVVM, MVC 框架的流行, jQuery, zepto.js 等传统 JS 库是否有走向边缘的趋势?

  •  
  •   changwei
    cw1997 Oct 11, 2016 5644 views
    This topic created in 3520 days ago, the information mentioned may be changed or developed.

    前端时间不是有一篇文章叫做《在 2016 年学 Javascript 是一种什么样的体验?》,虽然这篇文章更多的是从娱乐的角度描写,部分细节过于夸张,但是也确实有很多人说过:用 jQuery 来实现 webapp 容易导致代码量增大,且不优雅,页面的内容,状态控制很麻烦,性能低下, html 和 jq 代码耦合性变大。所以,随着各种前端 MVVM , MVC 框架的流行, jQuery 等传统 JS 库是否有走向边缘的趋势?(这里所指的走向边缘,也可以理解为一些非常简单的网页功能或者特效用 jq ,稍微大一点的仍然会选择前端 MVVM 或者前端 MVC 框架)

    25 replies    2016-10-11 12:51:20 +08:00
    murmur
        1
    murmur  
       Oct 11, 2016
    jQuery 是非常优秀的库,有些简单的需求就是 jQuery 最方便,不是所有网站都是单页面程序,不是所有的人都做移动开发,那种信息展示类的,一个模板套内容再来点动画交互要什么 MVVM

    举个最简单的例子,一个选项卡,用 jQ 代码几行在纸上都能写出来,如果你用 reactive 的风格怎么写?要求很简单,实现选项卡切换逻辑,选项卡每个样式可以自定,选项卡的内容自定,需要组件(工具)化
    checkout
        2
    checkout  
       Oct 11, 2016
    webapp 不适合 jq , webpage 普通交互还是 jq 简单
    murmur
        3
    murmur  
       Oct 11, 2016
    用 jQuery 来实现 webapp 容易导致代码量增大
    这句话是我见过最不要脸了, jq minify 了才多少字节,还附送一个超牛逼的 ajax ,你用的 fetch 和 axios 哪个不比这个大,而且大家推崇的新 fetch 还在开倒车,都不允许 json params ,必须自己拼成 url
    然后再看看你 ng2 , react 打出来的 bundle 多大一个,也就 vue1 有一点发言权,而且 jQ 兼容了 ie6-8 ,你不需要兼容 IE 再考虑这些新鲜玩意
    ps:ng2 居然是 ie7 兼容?他所有的双向绑定都是编译实现么
    zlawliet
        4
    zlawliet  
       Oct 11, 2016 via iPhone
    我觉得没有 jquery 我就没法写前端,我估计很多人也已经习惯了,而且, mvvm 跟 jquery 有啥关系? mvc 就是集成的它啊
    old9
        5
    old9  
       Oct 11, 2016
    ng2 不是 IE9+ 么?
    murmur
        6
    murmur  
       Oct 11, 2016
    @old9 看错了,那个表的 win7 我看成 ie7 了
    readonly
        7
    readonly  
       Oct 11, 2016 via iPhone
    @murmur 代码量增大,指的是业务代码。 webapp 之所以代码多,都是用户体验和人性化搞的,光是一个刷新逻辑都得费脑: 没有更多了~ 真的没有更多了~ 我保证没有更多了
    murmur
        8
    murmur  
       Oct 11, 2016
    @readonly 业务代码多比的上企业应用逻辑多么,企业应用这种大量表单填写、取值赋值、交互计算,才是上 mvvm 的好地方,问题是很多企业应用要兼容 IE8-,这就很蛋疼了
    互联网应用?用户体验?人性化?呵呵,举个例子(带有胡吹的),我只想要一个天气预报,这本来应该是浏览器导航页或者 widget 里的小功能,结果你给了我一个天气预报+跑步社区+今日头条+app 推广,业务逻辑能不多么
    tonghuashuai
        9
    tonghuashuai  
       Oct 11, 2016 via iPhone
    jQuery 和 MVVM 不是一类东西啊,没多少竞争关系
    Xrong
        10
    Xrong  
       Oct 11, 2016
    简单的页面 jq 就好了,接手起来也方便
    ChefIsAwesome
        11
    ChefIsAwesome  
       Oct 11, 2016
    有个毛关系,问这种问题简直莫名其妙。 high chart 很流行, jquery 是不是因为它走向边缘了? react 很流行, high chart 是不是走向边缘了?
    clino
        12
    clino  
       Oct 11, 2016
    两个配合一起用啊
    ianva
        13
    ianva  
       Oct 11, 2016
    是两种选择,是重业务逻辑还是页面效果,
    jQuery 就是 DOM 接口的改良版,如果单了页面的效果自然 jQuery 更合适,一旦涉及了业务逻辑,就会面临着业务逻辑与 DOM 操作的逻辑混合, 随着规模的变大就越来越难维护

    而对于需要大量修改页面效果的需求来说, MVVM 或者 react 之类都需要考虑框架自身对于组件生命周期的设计,需要操作 DOM 的地方会变的别扭起来,比如 angular 需要考虑 compile 和 link 两个阶段, react 要考虑一系列的生命周期,还有虚拟 DOM 的处理,所以相对来说复杂度会提升

    当然除了上面两个问题外我们还要考虑到项目的其他因素比如项目的规模

    如果项目够规模,我们还要考虑到一个问题就是模块化和组件化的能力,还要考虑到业务逻辑的需求变更,这个时候 mvvm 或 react 比 jQuery 会更合适,组件化复用能力和维护性上的提升是无可比拟的。

    如果只是简单的页面,自然不需要牛刀了,但这样的项目确实让人提不起胃口
    cheetah
        14
    cheetah  
       Oct 11, 2016
    我认为 jQuery 走向边缘化是必然的,
    一方面, jQuery 从根本上只是提供了跨浏览器的 DOM 、事件、 Ajax 等的封装,而随着浏览器对标准的支持越来越好,这些都可以直接用原生的 `document.querySelectorAll` `addEventListener` `fetch` 等代替
    另一方面,在 React 这种提倡声明式(declarative)库中,是希望避免直接的 DOM 操作的(命令式),写下来你会发现真的没有需要用到 jQuery 的地方
    murmur
        15
    murmur  
       Oct 11, 2016
    @cheetah ie8 不死 jq 不倒 源生还没有 remove 吧 只有 parentNode.removeChild
    quericy
        16
    quericy  
       Oct 11, 2016
    我们要支持到 IE6....
    而且不能指望让后端调页面还不用 jQuery 吧....
    cheetah
        17
    cheetah  
       Oct 11, 2016
    @murmur 那 IE8 是不是有死掉的趋势呢?
    murmur
        18
    murmur  
       Oct 11, 2016
    @cheetah 作为 win7 的预置浏览器, xp 的 ie 最高版本,考虑国内企业和大把的网吧,难
    cheetah
        20
    cheetah  
       Oct 11, 2016
    FrankFang128
        21
    FrankFang128  
       Oct 11, 2016 via Android
    jQuery 边缘化?
    笑话。。。
    不火不等于边缘化
    lijsh
        22
    lijsh  
       Oct 11, 2016
    我觉得 IE9 以上的项目没必要用 jQuery 了, DOM 选取、事件处理原生都有很好的 API 。
    g0thic
        23
    g0thic  
       Oct 11, 2016
    楼主说的是趋势?

    答案是的
    loading
        24
    loading  
       Oct 11, 2016 via Android
    我想说的是,知乎日报那个人不是翻译的作者。
    learnshare
        25
    learnshare  
       Oct 11, 2016
    应用场景不同,没有业务需求甚至不需要 MV*
    About     Help     Advertise     Blog     API     FAQ     Solana     1139 Online   Highest 6679       Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 59ms UTC 23:05 PVG 07:05 LAX 16:05 JFK 19:05
    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