为什么github放弃jQuery

2018-10-09  本文已影响0人  橙色流年

web前端发展了这么多年,jQuery可以说起着承上启下的作用,它的历史地位毋庸置疑,可以说很多小伙伴都是从jQuery开始成长的。但是时代在进步,在辉煌的王朝也终究有谢幕的一天。当数据驱动的概念被引入之后,3大主流框架作为后起之秀率先打开了前端的新大门,2018年7月17日,GitHub改版并放弃了jQuery, jQuery似乎离我们越来越远,但是如果我们彻底放弃jQuery,这些你真的都知道吗?

jQuery极大的方便了我们操作DOM,但是我们来看看github放弃jQuery的几个主要原因:

$(selector) 可以简单地用querySelectorAll()替换;

使用jQuery,我们可以方便快捷的选取DOM元素,例如

<div class="box">
    <span>111</span>
</div>
<script src="https://cdn.bootcss.com/jquery/3.3.1/jquery.js"></script>
<script>
    console.log($('.box'))  //即可以轻松选择到dom
</script>

通过querySelectorAll或者querySelector来获取元素

<div class="box">
    <span>111</span>
</div>
<div class="box">
    <span>222</span>
</div>
<script>
    console.log(document.querySelector('.box'))  //<div class="box">...</div>
    console.log(document.querySelectorAll('.box'))  //NodeList(2) [div.box, div.box]
</script>
CSS类名切换,可以通过Element.classList实现;

jQuery中为我们封装了很多好用的方法,如hasClass()、addClass()、removeClass()等,如果脱离了jQuery,我们如何来实现,这里就用到了classList。

<div class="box">
    <span>111</span>
</div>
<script>
    document.querySelector(".box").classList.add('box1')
    console.log(document.querySelector(".box"))  //<div class="box box1">...</div>
</script>
<div class="box box1">
    <span>111</span>
</div>
<script>
    document.querySelector(".box").classList.remove('box1')
    console.log(document.querySelector(".box"))  //<div class="box">...</div>
</script>
<style type="text/css">
div {
    width: 100px;
    height: 50px;
    line-height: 50px;
    text-align: center;
}
.box {
    background: red;
}
.box1 {
    background: blue;
}
</style>
<div class="box">
    <span>111</span>
</div>
<button id="button" onclick="myFunction()">切换样式</button>
<script>
function myFunction () {
    document.querySelector(".box").classList.toggle('box')  // 此处移除类box
    // 此处增加box1的类名,并且样式改变为box1,再次点击即移除box1,无则添加有则删除
    document.querySelector(".box").classList.toggle('box1')  
}
</script>
<div class="box box1">
    <span>111</span>
</div>
<script>
// 记得不要加点
document.querySelector(".box").classList.replace("box1","box2")
console.log(document.querySelector(".box"))  //<div class="box box2">...</div>
</script>
<div class="box box1 box2">
    <span>111</span>
</div>
<script>
// 返回class中第1个class类名
console.log(document.querySelector(".box").classList.item(1))  // box1
console.log(document.querySelector(".box").classList.item(4))  // null
</script>
<div class="box box1">
    <span>111</span>
</div>
<script>
// 判断是否有类名box1
console.log(document.querySelector(".box").classList.contains('box1'))  // true
console.log(document.querySelector(".box").classList.contains('box4'))  // false
</script>
使用 fetch 来代替 ajax

原生ajax请求相信没多少前端小伙伴能手写出来,然后jQuery进行封装之后大家写ajax方便了很多,只用$.ajax({})在进行对应的参数配置即可。然和如今原生DOM就封装了fetch给我们使用,并且fetch方法还能很好的支持跨域问题,关于fetch的用法小伙伴们可以看看这边文章 fetch,终于认识你

使用 DOM 标准化写了 polyfill

好吧,一脸懵逼,polyfill是什么鬼?没听过,来百度一下:

感觉这个答案应该不是我们想要的,但是我们可以通过其推断出,polyfill在以前大家都会封装一个公用库,就是解决各个浏览器兼容问题,而github通过使用最新的DOM标准打造全新的polyfill库来解决在各大浏览器造成的兼容难题,也充分说明了最新的DOM标准对兼容的支持越来越高啦!

使用了自定义元素。

用过现在流行新框架的童鞋们应该都了解,我们可以自己写组件然后通过自己指定标签名进行调用,例如我们在vue中会封装loading为公用组件,其他页面调用只需要import之后注册一下就可以直接使用<loading></loading>来进行全局调用。

原来原生DOM也可以自定义元素了,好吧,孤陋寡闻了。原来阮一峰老师17年就出过类似的文章,不愧是it界最会搞金融的大牛,永远走在最前端!想了解的点击传送门-HTML 自定义元素教程

上一篇下一篇

猜你喜欢

热点阅读