毫无疑问, JQuery 是一款非常优秀的JavaScript库,它让我们开发项目变得更加便捷容易,让我们更加方便的去操作dom,并有良好的浏览器兼容性。 但是随着MVVM的不断流行,如vue、react,他们以数据驱动的开发方式,大大提升了开发效率,且更易于项目维护,数据改变页面自动会变,再加上vue,react自带的模板引擎,让你写起来更加舒服也更有效率。 看一个简单的例子 vue实现:

<html><body>          <div id='app'>    <input type="text" v-model="inputValue"/><br>    <input type="text" v-model:lazy="inputValue"/>      <button v-on:click="handleBtnClick">点击button>    <ul>      <li v-for="item in list">{{item}}li>    ul>  div>    <script>      var app = new Vue({              //Model层,既数据层        el: '#app',        data: {          list: [],          inputValue:''        },        methods: {          handleBtnClick: function () {            this.list.push(this.inputValue)            this.inputValue = ''          }        }      })script>body>html>


我们能看出vue实现Todolist只需要将文本框输入的数据 直接 push 到list, 剩下的就让vue替我们干了,DOM操作彻底不见了, 我只关心数据怎么变化,这就是数据驱动的优势。 那咱们再看看 JQuery 实现:

<body>       <div>        <input id="input" type="text"/>        <button id="btn">提交button>        <ul id="list">ul>    div>    <script>       $("#btn").click(function(){           //获取表单的值           var inputTxt = $("#input").val();           if($.trim(inputTxt) === "" ){               return;           }           var oli = $("" + inputTxt + " ");           $("#list").append(oli);           $("#input").val("");       })script>body>


我们再看 JQuery ,就需要先添加点击事件,然后获取输入的值,然后创建新的li并将值拼接到内容中,最后append到ul中。对比一下。 JQuery 是典型的命令式开发,需要告诉程序下一步做什么,除了考虑数据的处理,还得考虑对应的DOM怎么操作。 从 JQuery 的命令式到vue的数据驱动思想的转变确实需要时间,但数据驱动确实能让我们写的代码更少,同时也更有效率,代码也更容易维护,因为只是在改变数据,简单的说也就是数据的增加,删除和修改。 那么, JQuery 就真的没用了嘛? 当然不是,如果项目页面上有大量的特效 ,这个时候就不是改改数据能搞定的事情了。尤其在一些特效丰富,数据没什么交互的活动页。再比如动画种类较多的弹幕等等 这个时候vue本身就很难搞定这些事情了。 因为动画还是需要大量的DOM操作,而vue虽然也支持DOM操作,但是非常不友好。 所以最终要学会的是场景的分辨。