作为一个前端新人,还要不要学 jQuery

简介: 作为一个前端新人,还要不要学 jQuery

What ?Are you kidding me?老弟,现在是 2020 年了,你还在学 jQuery?别是个傻子吧?

确实,如今想从事前端行业的新人基本上没有学 jQuery 的了,大家基本都是学 Vue 和 React,那我为什么还要写这篇博客?

1、为什么还要学 jQuery

回想第一次接触 jQuery 的时候还是在两年前的大四,当时的我正考虑走前端这条道路,不知从哪搞来了一张前端学习路线图,从 HTML + CSS + JavaScript 开始入门,自学过 jQuery,当时还没听说过 Vue(也可能是刚接触前端,比较孤陋寡闻)。


当时跟着书和网上的资料了解了一遍 jQuery,到现在,只记得 jQuery 的 $ 起手式,还有一个链式操纵,剩下的都忘了。就当下的时间来看,热门的前端框架是 Vue 和 React,大多数人可能认为没有必要再去学习 jQuery,因为 jQuery 已经过时了。


且不说 jQuery 过不过时,先来了解一个事实,看一下当年的 jQuery 到底有多火。


jQuery 于 2006 年发布,到如今已有 14 个年头了,自有前端行业以来,数以千万计的前端的框架和库,请问谁能比的了,Vue 和 React 两种比较新的框架也只不过五六年而已,能继续热几年还是个未知数,从这一点来看,jQuery 肯定是有相当优秀之处值得我们去学习。


其次 jQuery 在世界上使用的广泛程度,也是其他任何框架所不能比拟的,全球百分之 80% 左右的网站在使用 jQuery,吹牛呢吧?不相信的可以去 builtwith.com 上看一下,2020 年,全球前 10000 的网站中,有 8000+ 的网站在使用 jQuery。同比 Vue 还不到 1000。


但是不得不说,jQuery 确实过时了,它过时的原因并不是因为它本身不好,而是前端如今已经不怎么操作 DOM 了。


综上所述,jQuery 极为经典,它能活到现在肯定是有其优秀之处的,大家不要排斥学习 jQuery,了解一下思想也是好的。


既然对 jQuery 有了一个初步的了解,那我们来看一下 jQuery 的封装思想及相关 API 和基本使用吧。阮一峰:jQuery设计思想

2、jQuery 的封装思想

jQuery 极为简单,这句话是相对 Vue 和 React 来说的。jQuery 的源码就是封装的 JavaScript 的原生 dom API,而 Vue 和 React 是不推荐操作 dom 的,它们是基于 MVVM 的思想,其底层源码肯定是比 jQuery 复杂的。


如果了解一点 jQuery 的封装思想,你就会知道 jQuery 的源码是多简单,其思想是多精髓。就比如 jQuery 的链式操作,它是怎么做到的?

$('#div').addClass('red').addClass('blue');    //链式操作
window.$ = window.jQuery = function(selector){    //jQuery的封装思想
    let nodes = document.querySelctorAll(selector);
    return {    //闭包,返回一个可以操作当前选中节点的对象
        addClass:function(className){
            for (let i=0;i<nodes.length;i++){
                nodes[i].classList.add(className);
            }
            ruturn this;    //返回调用该函数的对象
        }
    }
}

jQuery 的其他相关 API 也是这样封装的,是不是符合上面说的,jQuery 的封装比较简单?实际上就是用到的闭包,每次调用封装的 API 后都能返回调用该方法的对象,通过这样来实现链式编程。


jQuery 其他方法的封装这里就先不写了,打算后期出一个完整的文档,如有更新会在这附上链接。 Build your own dom API

3、jQuery 如何获取元素

在使用 jQuery 前注意先将其引入到项目中,可以到 BootCDN 上找,或者到 jQuery 官网:

<script src="https://cdn.bootcss.com/jquery/3.4.1/core.js"></script>

jQuery 的基本设计思想和主要用法,就是 "选择某个网页元素,然后对其进行某种操作"。这是它区别于其他 Javascript 库的根本特点。使用 jQuery 的第一步,往往就是将一个选择表达式,放进构造函数 jQuery()(简写为$),然后得到被选中的元素。

$(document)            //选择整个文档对象
$('#myId')             //选择ID为myId的网页元素
$('div.myClass')       // 选择class为myClass的div元素
$('input[name=first]') // 选择name属性等于first的input元素
//也可以是jQuery特有的表达式:
$('a:first')         //选择网页中第一个a元素
$('tr:odd')          //选择表格的奇数行
$('#myForm :input')  // 选择表单中的input元素
$('div:visible')     //选择可见的div元素
$('div:gt(2)')       // 选择所有的div元素,除了前三个
$('div:animated')    // 选择当前处于动画状态的div元素

4、jQuery 的链式操作

jQuery 中一个重要的设计思想,就是最终选中网页元素以后,可以对它进行一系列操作,并且所有操作可以连接在一起,以链条的形式写出来,比如:

$('div').find('h3').eq(2).html('Hello');

这是 jQuery 最令人称道、最方便的特点。它的原理在于每一步的 jQuery 操作,返回的都是一个 jQuery 对象,所以不同操作可以连在一起。


jQuery 还提供了.end() 方法,使得结果集可以后退一步:

$('div').find('h3').html('Hello').end() //退回到选中所有的h3元素的那一步
    .html('World'); //将它的内容改为World

5、jQuery 如何创建元素

常见的是直接把这个节点的结构,给通过 HTML 标记字符串描述出来

$("<div></div>")

创建为文本节点,与创建元素节点类似,可以直接把文本内容一并描述

$("<div>我是文本节点</div>")

创建为属性节点,与创建元素节点同样的方式

$("<div id='test' class='aaron'>我是文本节点</div>")

通过 jQuery 对上一节代码进行改造

$("<div class='right'><div class='aaron'>动态创建DIV元素节点</div></div>")

这就是 jQuery 创建节点的方式,但是动态创建的元素只是临时存放在内存中,最终需要放到页面文档并呈现出来,这里就涉及到一个位置关系,常见的就是把这个新创建的元素,当作页面某一个元素的子元素放到其内部,append() 与 appendTo()


6、jQuery 如何移动元素

jQuery 提供了两组方法,来操作元素在网页中的位置移动。一组方法是直接移动该元素,另一组方法是移动其他元素,使得目标元素达到我们想要的位置。假定我们选中了一个 div 元素,需要把它移动到 p 元素后面:


第一种方法是使用 .insertAfter(),把 div 元素移动 p 元素后面:

$('div').insertAfter($('p'));

第二种方法是使用 .after(),把 p 元素加到 div 元素前面:

$('p').after($('div'));

表面上看,这两种方法的效果是一样的,唯一的不同似乎只是操作视角的不同。但是实际上,它们有一个重大差别,那就是返回的元素不一样。第一种方法返回 div 元素,第二种方法返回 p 元素。你可以根据需要,选择到底使用哪一种方法。


使用这种模式的操作方法,一共有四对:

.insertAfter()和.after():在现存元素的外部,从后面插入元素
.insertBefore()和.before():在现存元素的外部,从前面插入元素
.appendTo()和.append():在现存元素的内部,从后面插入元素
.prependTo()和.prepend():在现存元素的内部,从前面插入元素

7、说点关于编程语言的个人观点 ~

可能大家也会有同感,在网上会看到或听到如:" ***是世界上最好的语言!" 这种的言论,可能是某些开发人员在长期使用***编程语言产生感情的缘故,其实我个人是不赞同的这种观点的,因为我觉的各种语言其实没什么好与不好的区别,只有是否更适用于哪个场景的区别。


比如 Java 更适合写服务端,JavaScript 虽然有很多问题,但是是前端最好的选择,python 的计算能力比较强大,一般应用在机器学习和深度学习领域。其实作为一个开发爱好者来说,我认为各种编程语言没有好与坏的区分,它们只是开发人员解决问题的工具,没有什么特殊性,就比如说铅笔和钢笔,你能说铅笔或者钢笔更好吗?很显然不能,因为它们只是使用场景不同。


编程语言也是一样的,它只是开发人员处理问题和解决问题的工具,不存在学习哪门语言更好的问题。


Programming is just a tool,it is nothing special,if you press it hard enough,you can write a novel,paint a beautiful portrait,build a plan for skyscraper。

目录
相关文章
|
13天前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
25 3
|
2月前
|
JSON 缓存 前端开发
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
个人练习前端技术使用Bootstrap、JQuery、thymeleaf
26 2
|
1月前
|
JavaScript 前端开发 API
【前端基础篇】JavaScript之jQuery介绍
【前端基础篇】JavaScript之jQuery介绍
56 0
|
3月前
|
JavaScript 前端开发 程序员
后端程序员的前端必备-jQuery核心学习笔记
后端程序员的前端必备-jQuery核心学习笔记
57 13
|
4月前
|
JavaScript 前端开发 API
前端框架与库 - jQuery基础与DOM操作
【7月更文挑战第18天】jQuery 是一个简化JavaScript任务的库,以其“write less, do more”理念著称。核心功能包括DOM操作、事件处理和Ajax。DOM操作如选择元素(`$(&quot;p&quot;)`、`$(&quot;#myDiv&quot;)`、`$(&quot;.myClass&quot;)`)、创建及添加元素、修改属性和内容。事件处理如绑定(`click`)和触发(`trigger`)。常见问题涉及`$`符号冲突(使用`jQuery`代替)、异步加载管理和选择器性能优化。了解并规避这些问题能提升jQuery使用效率。
33 0
|
5月前
|
JavaScript 前端开发
杨校老师课堂之Web前端JS类库_JQuery案例[效果图与代码齐全]
杨校老师课堂之Web前端JS类库_JQuery案例[效果图与代码齐全]
35 0
|
6月前
|
JavaScript 前端开发 算法
JQuery 基本使用,2024BAT大厂Web前端社招面试题
JQuery 基本使用,2024BAT大厂Web前端社招面试题
JQuery 基本使用,2024BAT大厂Web前端社招面试题
|
6月前
|
JavaScript 前端开发 索引
【Web 前端】jQuery 里的 each() 是什么函数?你是如何使用它的?
【5月更文挑战第2天】【Web 前端】jQuery 里的 each() 是什么函数?你是如何使用它的?
|
6月前
|
JavaScript 前端开发
【Web 前端】jQuery 库中的 $() 是什么?
【5月更文挑战第1天】【Web 前端】jQuery 库中的 $() 是什么?
|
6月前
|
JavaScript 前端开发
【Web 前端】 jQuery 里的 ID 选择器和 class 选择器有何不同?
【5月更文挑战第1天】【Web 前端】 jQuery 里的 ID 选择器和 class 选择器有何不同?