普遍认为jQuery是适合web初学者的起步工具。许多人甚至在学习jQuery之前,他们已经学习了一些轻量JavaScript知识。为什么?部分是因为jQuery的流行,但主要是源于经验开发人员的一个错误的理念:因为jQuery是简单的,所以对于初学者也很简单适合。jQuery提供了简洁,不简化jQuery确实克服了很多旧浏览器问题。但是,它在封装DOM API和JavaScript的复杂性上并没有做太多。键入 $(‘#id’).click(function(event) {..}); 确实非常简短,但是你还是需要了解一些背景知识才能写这些代码:DOM节点选择,事件处理,回调等等。如果你已经理解了DOM API和JavaScript,jQuery是简单,但初学者不容易编写。Vue.jsVue.js是JavaScript镇上新来的小子。它的许多优势,易于学习可能是第一。简单已经内建于它的设计。我断言,初学者可以用VUE建立平常Web应用,并对他们如何工作了解得更清楚,特别是相比于他们使用jQuery构建一样的东西。让我们用jQuery和vue.js实施一个非常简单的应用程序,看看它是多么轻量。这个案例程序将计算一个按钮被点击的次数,并在屏幕上显示这个数字。

JQuery实现

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

它看起来很简单,但考虑到这只是因为你是从经验丰富的开发人员角度看。其实理解代码实际所做的原理是相当棘手的。想想:1. $(document).ready(function() { .. });这这30个字符包含四个棘手的概念:DOM节点的选择、事件处理、文件的加载过程和回调。如果你没有学会所有这些东西,那么你不明白你刚才写的代码。2.要选择一个DOM元素实现操作并完成业务,你需要jQuery构造器$('…')。不幸的是,你不能确定到底你会得到什么节点,你需要使用CSS3-like选择器创建一个合适的过滤器,运行时才能确定。要做到这一点,你需要创建一个DOM复制和模拟运行你的滤波器会对它做些什么。当你编写更新DOM的每个方法时,你必须同样地更新你的DOM复制和考虑如果你的过滤器仍然如预期一样正常工作。3.JQuery只有一个模式:选择jQuery某样事情,然后从API的方法做你选择的事情。这一模式的问题是,我们现在有一个扁平的、有超过100个的方法,从AJAX到数组一维迭代。仅仅使用这么多方法的名称描述就能足以区分他们所做的和他们的返回的是不可能的。一个初学者理解这些串联在一起的方法是真的需要好运。

使用Vue.js实现:

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

Vue已经解决了之前jQuery很多痛点:1.无需担心DOM回调,这种复杂性已经被封装。Vue的生命周期挂钩将允许更精确的控制,如果它需要。2.在数据属性counter和它渲染输出DOM节点之间有一个明显的之间的链接。无需心理DOM,你可以看到它在网页上有保证,更新计数器不会弄乱你的DOM以意想不到的方式由于摇晃的节点选择。不再需要DOM复制,你可以看到它在网页上,保证更新计数器时不会由于靠不住的节点选择以意想不到的方式弄乱你的DOM。3.我们没有模棱两可的API方法需要查找或记住。不同的功能被很好的组织和分层在Vue构造函数对象中,或能通过指令直接应用到模板中的DOM节点,这些指令提供更多的易于理解的上下文。因此,如果你已经理解JavaScript和DOM API,jQuery是容易。但这不是初学者的情况。因此,jQuery是不简单的,只是略微简单。另一方面,Vue简单内建到它的设计。对DOM API许多困难的部分进行了封装。初学者因此可以很快编写他们真正理解的代码,当他们需要做更复杂的东西,Vue也会提供给他们。所以下次有人问你,什么是他们作为一个网站开发人员初学者应该学会的,也许并不是jQuery。

Vue.js与Jquery的比较 谁与争锋 js风暴的更多相关文章

  1. 三种动态加载js的jquery实例代码另附去除js方法

    !-- 这里为你提供了三种动态加载js的jquery实例代码哦,由于jquery是为用户提供方便的,所以利用jquery动态加载文件只要一句话$.getscript("test.js&quo ...

  2. SpreadJS + GcExcel 一出,谁与争锋!全栈表格技术轻松应对复杂公式计算场景(一)

    设计思路篇 Excel是我们日常办公中最常用的电子表格程序,不仅可满足报表数据的计算需求,还可提供绘图.数据透视分析.BI和Visual Basic for Applications (VBA)宏语言 ...

  3. 思道OA PK 通达OA 同场竞技 谁与争锋

    技术架构 思道OA 通达OA 开发语言 微软ASP.NET 4.0 PHP开源脚本语言 64位平台 64位 32位 数据库 SQL Server大数据库 MySQL开源数据库 官网下载 下载地址 下载 ...

  4. C/S与B/S谁与争锋之我见

    看到网上有些人在讨论C/S架构和B/S架构以及它们的发展趋势,后起之秀B/S是否真将取代C/S而存在?在发表我的观点之前,我们先来一起来回顾下C/S以及B/S. 一C/S 1.C/S概念 C/S是Cl ...

  5. R vs Python,数据分析中谁与争锋?

    R和Python两者谁更适合数据分析领域?在某些特定情况下谁会更有优势?还是一个天生在各方面都比另一个更好? 当我们想要选择一种编程语言进行数据分析时,相信大多数人都会想到R和Python——但是从这 ...

  6. 新一批创业者金矿,iclap谁与争锋

    19世纪,美国西部开发,无数拓荒者涌入,并最终因金矿的发现形成了淘金热.而当无数人埋头寻找黄金之时,有一个人却抬起头看到了潜藏在无数淘金者身上的金矿-这个人就是牛仔裤的发明者,Levi’s的创始人-李 ...

  7. 第1课 Git、谁与争锋

    1-1  安装和使用Git http://git-scm.com/downloads Git的指令模式,才能够清楚地了解Git的工作细节.最后还会介绍Git Server的架设和管理,让读者能够熟练使 ...

  8. 5.js与jQuery入口函数执行时机

    js与jQuery入口函数执行时机区别: JS入口函数是在所有资源加载完成后,才执行.(包括:页面.外部js文件.外部css文件.图片) jQuery入口函数,是在文档加载完成后就执行.文档加载完成指 ...

  9. js和jquery给iframe src赋值的3种方法

    js和jquery给iframe src赋值的3种方法   网页使用iframe嵌入网页时,有时候需要动态处理src的值,而不是写死的,所以我们需要知道如何给iframe src赋值,通常是使用js或 ...

随机推荐

  1. Ubuntu安装JDK与环境变量配置

    Ubuntu安装JDK与环境变量配置 一.getconf LONG_BIT 查看系统位数,并下载相应的jdk.我的系统是32位的,所以下载的jdk是:jdk-8u77-linux-i586.gz.并且 ...

  2. C语言中字符串常用函数--strcat,strcpy

    strcpy 原型声明:extern char *strcpy(char* dest, const char *src); 头文件:#include <string.h> 功能:把从src ...

  3. BLOCK/字面量(语法糖)OC——第六天

    1.//block ,块语法,实质是匿名函数,是对C语言中函数的扩充,扩展: //block  语法可以用来保存一段代码或者用来调用一段封装好的代码: //block  语法由于是C语言实现的,所以执 ...

  4. css文本样式-css学习之旅(4)

    color:颜色derction:方向:line-height:行高:letter-spaceing:字符间距:text-align:对齐方向:text-decoration:装饰:text-inde ...

  5. AngularJS进阶(二十八)解决AngualrJS页面刷新导致异常显示问题

    解决AngualrJS页面刷新导致异常显示问题 绪 俗话说,细节决定成败,编程亦是如此.编程过程中我们可能会不自觉的忽视一些细节问题,殊不知,这些细节正是导致页面显示出现问题的地方.今略举一例,与君共 ...

  6. SpringMVC提供两种校验机制

    本文不讲如何使用SpringMVC提供的两种校验机制,只是简单的说明一下其中的差别而已: 1.创建一个Bean,在Bean的属性中添加校验信息,通过配置LocalValidatorFactoryBea ...

  7. Unity热更新之C#反射加载程序集

    用C#反射加载程序集的方式可以动态的从assetBundle资源包或其他资源包里加载脚本到工程中,即便是原工程中不存在的脚本. 我这里就用加载本地assetBundle的方式来进行讲解了,加载网络上的 ...

  8. Python的time(时间戳与时间字符串互相转化)

    strptime("string format")字符串如"20130512000000"格式的 输入处理函数 localtime(float a)时间戳的输入 ...

  9. python的exec

    exec "一条python语句" 这样会执行python 语句.用于执行储存在字符串或文件中的Python语句. 当然 也可以 用 exec(str)这种方式, 总之一句话,尽量 ...

  10. 二叉树的最大深度算法面试题-leetcode学习之旅(3)

    标题 Maximum Depth of Binary Tree 描述 The maximum depth is the number of nodes along the longest path f ...