彻底抛弃 jQuery ,不然还留着过年?

我以前很喜欢 jQuery,而且说实话,我是先学jQuery,再学 JavaScript 的。所以我写这篇文章有点像是在背叛 jQuery。

我知道,关于为什么不应该用 jQuery 的文章已经汗牛充栋,但我只是想说下自己的亲身体验。

不用 jQuery 用什么?

随着 web 的发展,新技术长江后浪推前浪,前浪死在沙滩上。就像有些编程语言曾经辉煌过,现在也消失不见了。我认为 jQuery 也不例外,是时候跟 它说再见了,虽然它曾经给我们带来过美妙的编程体验。

为什么要放弃 jQuery 呢?因为有 Vue 啊!如果你看过我之前的文章,你应该能猜到我是 Vue.js 粉。Vue.js 提供了非常多的工具,我敢说它比jQuery 方便多了。

DOM 与事件

让我们来看一个点击事件的例子。

请注意,我省略掉了框架的初始化部分

一个 Vue SFC(别慌,意思就是Single File Component,单文件组件):

<template>
    <button @click="handleClick">点我,用力</button>
</template>

<script>
    export default {
        methods: {
            handleClick() {
                alert('老铁,你点击了按钮');
            }
        }
    }
</script>

用 jQuery 是这样写的:

<button id="myButton">点吧</button>

<script>
    $('button#myButton').click({
        alert('这次用 jQuery');
    });
</script>

你可能会觉得 Vue.js 的代码更多啊,你说的没错,但也不对!Vue.js 并不是有更多代码,实际上除了?handleClick() { ... }?之外的部分只是框架的结构,跟其他行为是共用的。我觉得 Vue.js 看起来更整洁,代码可读性更高。

你心里可能还有一个疑问,你还是用了 Vue.js 啊,五十步笑百步?有本事别用!实际上你完全可以用原生 JavaScript 实现:

<button id="myButton">来点我呀</button>

<script>
    document.getElementById('myButton').addEventListener('click', function() {
       alert('来自原生js的问候');
    });
</script>

所以你看,jQuery 只是背着我们把代码翻译成原生 JavaScript 而已,假装自己很特别。

至于 DOM 元素的选择操作,用原生 JavaScript 可以轻松做到:

document.getElementById('myButton'); // jQuery => $('#myButton');
document.getElementsByClassName('a'); // jQuery => $('.a');
document.querySelectorAll('.parent .a'); // jQuery => $('.parent .a');

AJAX 请求

jQuery 被用得最多的方面可能就是 AJAX 了。
我们都知道 jQuery 提供了?$.ajax()?,也可以分别用具体的 $.post()?和?$.get()?。这些 API 可以帮你发送 AJAX 请求,获取结果等等。

你可以用原生 JavaScript 的两个方法,那就是 XMLHttpRequest?和?fetch

XMLHttpRequest?也算是个老古董了,?跟 fetch 相比还不太一样。

fetch?更加时新,也比 XMLHttpRequest?更常用,而且是基于 promise 的。

fetch?默认不发送 cookies,并且如果 HTTP 状态码返回错误码,比如404或500,它不会 reject,因此基本上 .catch()?不会运行,而是 response.ok?变成 false

在这里就不详细对比它们了。

我们还是来看两段代码。

这是 jQuery:

$.ajax({
  method: "POST",
  url: "http://localhost/api",
  data: { name: "Adnan", country: "Iran" }
}).done(response => console.log(response))
  .fail(() => console.log('error'));

示例代码来自 jQuery 官方文档

这是 fetch:

fetch(
    'http://localhost/api',
    {
        method: 'POST'
        body: { name: "Adnan", country: "Iran" }
    }
  ).then(response => console.log(response));

两段代码做的事情是一样的,但fetch?不属于任何库。

请注意,?fetch?也可以跟 async/await 结合使用,如下所示:

async function getData() {
    let response = await fetch('http://localhost/api' {
        method: 'POST'
        body: { name: "Adnan", country: "Iran" }
    });
    return response;
}

那我自己用?fecth?吗?实际上没有,因为我不太信任它,原因有很多。因此我在用一个叫 axios 的库,也是基于 promise 的,同时非常可靠。

上面的代码用?axios 写是这样的:

axios({
    method: 'POST',
    url: 'http://localhost/api',
    data: { name: "Adnan", country: "Iran" }
}).then(response => console.log(response))
  .catch(err => console.log(err));

axios?也可以跟 async/await 结合使用:

async function getData() {
    let response = await axios.post('http://localhost/api' {
        name: "Adnan",
        country: "Iran"
    });
    return response;
}

总结

我现在自已经不再用 jQuery 了,尽管我曾经非常喜欢它,那个时候项目初始化后的第一件事就是安装 jQuery。

我相信我们已经不再需要 jQuery 了,因为其他库和框架实际上能比 jQuery 更方便、更简洁地完成任务。

可能还有大量的插件基于 jQuery,但基本上都有相应的 Vue.js 或者 React.js 组件替代品。

你们怎么看?欢迎在评论区留言!

交流

欢迎扫码关注微信公众号“1024译站”,为你奉上更多技术干货。

原文地址:https://www.cnblogs.com/lzkwin/p/11888177.html

时间: 2024-08-04 11:12:16

彻底抛弃 jQuery ,不然还留着过年?的相关文章

抛弃jQuery:Why?

抛弃jQuery:Why? http://kangax.github.io/compat-table/es5/

抛弃jQuery,拥抱原生JavaScript

前端发展很快,现代浏览器原生 API 已经足够好用.我们并不需要为了操作 DOM.Event 等再学习一下 jQuery 的 API.同时由于 React.Angular.Vue 等框架的流行,直接操作 DOM 不再是好的模式,jQuery 使用场景大大减少.因此我们项目组在双十一后抽了一周时间,把所有代码中的 jQuery 移除.下面总结一下: Why not jQuery 1. 模式变革 jQuery 代表着传统的以 DOM 为中心的开发模式,但现在复杂页面开发流行的是以 React 为代表

jQuery实现还能输入N字符

页面: <table cellpadding="0" cellspacing="0" border="0" width="100%">                        <tr>                            <td>                                <textarea name="" id=&quo

手游发行商抛弃渠道,还能存活下来吗

目前来看死路一条,盛大的什么百万亚瑟王算例子,由于号称不需要渠道也能做起来,于是所有渠道都不待见,导入量无法达到预期. 能不能离开渠道的本质其实是看留存+游戏生命周期,目前看手游的留存逐渐接近能像端游一样运营的条件,但游戏生命周期还不够,需要完善的社交.用户交互才能较好地延长游戏寿命.(游戏寿命指单用户生命,而不是通过不停导入没玩过的玩家来延长的方式.) 一旦手游市场达到400-500亿甚至以上规模的时候,目前的商店渠道是不能满足产品需求的,这也一定程度上提高媒体等相关途径的话语权,但传统商店渠

抛弃jQuery 深入原生的JavaScript

学习如何更好的将纯JavaScript用于工作中,而不总是将jQuery考虑在第一位.现在我每天学习很多东西.这个过程让我觉得Adtile的JavaScript SDK 更像是在创建一个开源工程,而不是"具体的工作",不得不说,我很喜欢那样. 今天,我准备将在过去几年学到的一些基础东西与大家一起分享,这将可能帮你深入纯 JavaScript的世界,让你能更简单的做出决定--jQuery在你下个工程中是否需要. 逐步增强 虽然像jQuery这样的库有助于解决许多浏览器之间不兼容的问题,但

Jquery 提示还可以输入的字数,将多余的字数截取掉

js代码: $(function () { var counter = $("#divform textarea").val().length; //获取文本域的字符串长度 $("#gptu var").text(289 - counter); $(document).keyup(function () { var text = $("#divform textarea").val(); var counter = text.length; if

抛弃jQuery,深入原生的JavaScript

虽然我已经做网站建设工作10多年了,但我从最近3年才开始更多地学习如何更好的将纯JavaScript用于工作中,而不总是将jQuery考虑在第一位.现在我每天学习很多东西.这个过程让我觉得Adtile的JavaScript SDK 更像是在创建一个开源工程,而不是"具体的工作",不得不说,我很喜欢那样. 今天,我准备将在过去几年学到的一些基础东西与大家一起分享,这将可能帮你深入纯 JavaScript的世界,让你能更简单的做出决定--jQuery在你下个工程中是否需要. 逐步增强 虽然

你说得对,我觉得还可以这样

也是在这两年,才有这么感觉,就是与人交流不能太惯着自己的情绪.具体体现在于,别人说的观点自己并不认同,或者是存在异议的地方,不会总争论"错"的,而是找寻他说得"对"的. 人之间存在不同见解是很正常的,也容易出现互相捉着痛点辩驳,就是要对方接受己方的观点,也时常忽略了对方正确的地方.可能有人会说,"我就是觉得他全在放屁,都是瞎扯."但凡出现这种情况的,先看自己是否处于冷静状态,判断的依据何在,再得出结论,就怕是自己经验浅薄的误会,油盐不进的偏执狂.

web前端入坑第四篇:你还在用 jQuery?

web前端入坑第四篇:你还在用 jQuery? 大妈都这么努力,我们有几个人回家还看书的? 先来补齐[web前端入坑系列]前三篇的连接web前端入坑系列:点击标题进入第一篇: web 前端入坑第一篇:web前端到底是什么?有前途吗第二篇: web前端入坑第二篇:web前端到底怎么学?干货资料!第三篇:web前端入坑第三篇 | 一条"不归路" - 学习路线! 再说这个话题之前,我们先来扫盲普及一下 [jquery] 到底是什么以及它火爆将近十年的重要原因. [ 重新认识 - Jquery