一. 前言
首先,直接操作dom的编程方式已经成为过去,数据驱动才是正途!
其次,不一定非要舍弃jQuery,只是可以,选择权在自己手上!
下面只是就事论事
二. 落幕
2018年7月 全球最大的同性交友社区(Github)被微软收购后的 52 天,改版并放弃了 jQuery 。这一举动让我等搬运工陷入了沉思。
三.Why?
随着ECMAScript标准的更新,原生js已经可代替jQuery,给我babel一个面子,不要再说兼容不支持的话!
下面举两个比较常用的方面来说明:
- jQuery Api可以使用原生轻松实现
- 使用 fetch 来代替 ajax;
Fetch API 是基于 Promise 设计,更符合目前的异步解决方案。什么是目前的异步解决方案?翻看上一篇async & await
四.具体实现对比(部分)
1.选择器
//jq
$("#a .b");
//Native
document.querySelectorAll("#a .b");
2.插入
//jq
$(selector).append(html);
//prepend
//before
//after
//Native
document.querySelectorAll(selector).insertAdjacentHTML("beforeend", html);
//beforebegin 开始标签之前 before
//afterbegin 开始标签之后 prepend
//beforeend 结束标签之前 append
//afterbegin 结束标签之后 after
3.类操作
//jq
$(selector).addClass(className);
//hasClass
//removeClass
//toggleClass
//Native
document.querySelectorAll(selector).classList.add(className, className, className...);
//contains(className) 检测是否存在
//removeClass(className, className, className...) 删除
//toggle(className, true|false) 切换
4.ajax
//jq
$.ajax({
//.................
});
//Native
(async () => {
try{
const res = await req(url, {
headers: {
Accept: "text/html"}});
if(......){
.......
}
} catch {
}
}());
function req(url, data) {
//自己封装,仅供参考
let sendurl = url;