毫无疑问,
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操作,但是非常不友好。
所以最终要学会的是场景的分辨。