Vue.js比jQuery更好学

Posted 奇舞周刊

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Vue.js比jQuery更好学相关的知识,希望对你有一定的参考价值。

编者注:本文由sea_ljf在众成翻译平台上翻译。

大家普遍认为,对于新手Web程序员来说,jQuery被认为是一个好的入门点,甚至于很多程序员都是先学jQuery,再学原生javascript

为什么呢?首先是因为jQuery非常流行,但更重要的是,有经验的程序员都认为jQuery十分简单,推己及人,对于新手来说当然也应该是非常简单的,然而这并不正确。

jQuery简洁,但不简单。

jQuery绝对可以帮你处理掉很多老浏览器的麻烦事(译者注:比如各种兼容性问题),但对于简化DOM API操作和封装JavaScript变化而言,它就帮不上什么忙了。

当然,对于敲 $(‘#id’).click(function(event) {..}); 这样代码的时候,肯定比原生的JavaScript要简洁。但一些知识你是必须要掌握的,比如DOM选择器,事件处理,回调函数等等,不然你可写不出上述的代码。

jQuery能让你更简单地写代码,前提是你懂得DOM API和JavaScript的相关知识,但这对新手来说并不容易。

Vue.js

Vue.js是JavaScript世界的新宠,我几乎可以说它是最好学的。简约之道,深入其中。

我坚信,当一名新手使用Vue.js编写完一个简单的应用后,会比他使用jQuery(编写同一应用)更好地理解代码是如何工作的。

那么,让我们一起动手,分别用Vue.js和jQuery编写一个相同的简单应用,看看那个更好理解。这个应用会计算点击按钮的次数,并显示在显示出来。

使用jQuery编写

以下是使用jQuery编写的典型例子:

<div id="output"></div>

<button id="increment">Increment</button>
<script>  var counter = 0;  $(document).ready(function() {    var $output = $('#output');      $('#increment').click(function() {      counter++;      $output.html(counter);    });    $output.html(counter);  });
</script>

看起来挺简单的,但这只是因为你是个经验丰富的程序员。如果要搞清楚代码是怎么工作的,还是挺复杂的,不信你看:

  1. 在使用jQuery编程的时候,脚本中首先输入的是$(document).ready(function() { .. }); 。在这三十来个字母的代码中,如果你不知道以下这四个概念其中之一,你一定浑身难受而且不懂为什么代码能工作。1.DOM节点选择器。2.事件处理。3.文档加载过程。4.回调函数。

  2. 当需要选择一个DOM元素的时候,你要使用jQuery的构造器$(‘…’)。然而不幸的是你无法确切地指出获取到的是什么节点,你需要使用一个像CSS3选择器一样的过滤器,才能保证代码运行时(获取的DOM节点)是你想要的。为了更好的完成这工作,你需要在脑海中模拟出DOM节点并模拟出你通过选择器选取时会发生什么。当你写的任一个方法更新DOM元素时,你也需要在脑海中模拟出那节点到底怎么更新,并确定这个选择器还能如期工作。

  3. 由于一些因素的考虑,jQuery只可以使用一种模式:选择某些东西,通过API方法去操作被选择的东西。但这种模式存在问题。jQuery有超过100种方法去应对不同的业务场景,如处理AJAX、数组遍历等,但这些API都是一维平面的(译者注:其实就是吐槽jQuery的API名称过分简洁,不分层),这些方法的名称不可能一眼就可以看出它的用途及其返回值。祝新手们好运吧,希望他们能理解这些方法到底要如何使用。

使用Vue.js编写

以下是使用Vue.js编写的典型例子:

<div id="app">  <div>{{ counter }}</div>  <button v-on:click="increment">Increment</button>
</div>
<script>  new Vue({    el: '#app',    data: {      counter: 0    },    methods: {      increment() {        this.counter++;      }    }  });
</script>

Vue.js解决了上述jQuery的很多痛点:

  1. 不需要考虑文档加载后才能执行回调函数,其中的各种复杂性已被Vue.js隐藏起来。如果你需要更精细的操作,可以使用Vue.js生命周期函数提供的相应钩子。

  2. data属性中的counter会与DOM节点相互关联(译者注:即数据驱动),counter产生变化时DOM节点会被重新渲染。不再需要在脑袋中记着DOM了,(当点击按钮时,)你会肯定页面中的计数器会被更新,不会出错,而不必担心由于使用了靠不住(jQuery)选择器导致出现的莫名其妙错误。

  3. 我们不需要去查找或者回忆那些模棱两可的API方法。在Vue.js的构造对象中,不同的功能被分层组织,一目了然,或者是通过指令给予更多的上下文,更好地理解DOM节点在模板中是如何工作的。

啰嗦太多了,总结如下

如果你熟悉原生JavaScript与DOM API操作,jQuery确实会更容易。但这对新手来说并不可能。jQuery简洁,但不简单。

另一方面,Vue,简约之道,深入其中。DOM API中许多难的部分都被封装起来了。新手可以写出他们真正能懂的代码,而当他们想写出更复杂的代码时,Vue也是支持的。

所以当下次有人问你,新手web程序员该学什么的时候,jQuery可不一定是个好答案。


以上是关于Vue.js比jQuery更好学的主要内容,如果未能解决你的问题,请参考以下文章

Vue.js与jQuery哪个更好学?

Vue.js 很好,但是比 Angular 或 React 更好吗?

使用带有渲染功能的 Vue.js 3 片段

第1129期对vue.js单文件(.vue)进行单元测试

JQuery 重度用户学习 Vue.js 的指南

前端学完vue学啥