9012年了,你还在用 jQuery 吗?
概述
回顾过去,创建 jQuery 是为了应对浏览器之间的 JavaScript 实现差异,Internet Explorer 是当时的罪魁祸首。作为一个易于使用的解决方案,jQuery 已经被开发人员和初学者广泛接受,大多数人开始通过这个库使 JavaScript。
在 2019 年,IE8 到 IE11 的使用量已经极少。这意味着我们可以从应用程序中删除 jQuery 并改为标准 DOM 和一些 ES6 的特性。从此,浏览器不必在处理代码前加载整个库了,大大减小了前端的性能压力,这对移动端浏览器来说尤为重要。
JQuery 不可取代吗?
AJAX
当你想用AJAX,原生的实现方式是 XMLHttpRequest,但是几乎没有人愿意使用这个难用的 API。jQuery 用 $.ajax
方法封装了这个难用的 API,并且提供了 $.get
和 $.post
两个快捷的方式。
|
|
在现代浏览器中,我们可以使用 fetch 方法来取代 AJAX 了,需要注意的是, fetch 并不是对 AJAX 的另一种封装,而是作为 AJAX 的替代者,避免了 AJAX 常见的回调地狱的问题,若搭配 ES2017 的 await 和 async API 使用的话堪称神器,fetch API 相对于 AJAX 就如写 GO 语言的协程相对于写 JAVA 多线程一般的快感。
|
|
关于此部分的详细内容和 Promise 对象的使用,后面的文章会专门介绍。
选择器
在 jQuery 中我们使用 $( ) 函数来进行选择元素
|
|
下面是标准 DOM 进行选择的方法
|
|
插入一个 DOM 元素
jQuery 的做法
|
|
标准 DOM 的做法,此处用到了 ES6 的模板字符串
|
|
操作 CSS 样式列表
jQuery 的做法
|
|
标准 DOM 的做法
|
|
事件监听
jQuery 的做法
|
|
标准 DOM 的做法
|
|
小结
为了所谓的兼容性,尤其是业界毒瘤 IE 浏览器的存在,多数情况下我们不能直接使用 HTML5 和 ES2016+ 的部分特性,不过近年来繁荣的前端生态圈出现了Babel 这个 JavaScript 编译器和 Polyfill 这个项目,借助它们可以让你避免这个问题。
等一等,JavaScript 不是解释执行的嘛?为什么还需要编译器呢?要注意的是,此处所属的编译是指将 ES2016+ 标准的 JavaScript 语法翻译为古老的浏览器能够理解的 JavaScript 语法,并非传统意义上编译的概念。
那么 Polyfill 又是什么呢?
Polyfill 可以理解为装修中的腻子,用于抹平新老浏览器之间的差异,将新的 JavaScript API 用于老的浏览器上,而Babel 只负责语法上的转换。
需要注意语法和 API 两个概念是不一样的,如 ES6 的箭头函数可以用原生 Babel 转为 function 形式,而 Array 是 ES5 就存在的一个对象了,但是该对象没有 of 方法,这个方法就是一个 API ,但 ES6 有这个 API 了。对于不支持 ES6 的浏览器,我们可以引入 babel-polyfill 使其支持 ES6 的 API。
- 原文作者:范明勇
- 原文链接:https://blog.fanmuyong.com/post/9012%E5%B9%B4%E4%BA%86%E4%BD%A0%E8%BF%98%E5%9C%A8%E7%94%A8-jQuery-%E5%90%97/
- 版权声明:本作品采用知识共享署名-非商业性使用-禁止演绎 4.0 国际许可协议进行许可,非商业转载请注明出处(作者,原文链接),商业转载请联系作者获得授权。