之前我写过一篇文章叫做《jq不会被淘汰》……而事实上它真的不会被淘汰,因为即使在mvvm框架盛行的今天,原生js的api越来越友好的今天,jq依然在用户量上是霸主……

但是今天我们要讨论的是,抛弃jq,拥抱原生js……

再说正题之前,我们先来看看jq比js,解决了哪些问题,哪里更优秀

1.首当其冲是浏览器兼容,jq本身做了很多浏览器的兼容,这导致了它的代码变得臃肿,但是不得不说,这方面jq做的很好√

2.语法比较简洁,jq的代码语法是很简洁的,因为层层封装后,为的就是易用

3.jq封装的ajax方法很好用,平时我们做前后端分离的时候,请求数据是必不可少的,jq的ajax就比较优雅,而同样的,如果是原生js,写一个ajax代码量可不少……

我说我们应该抛弃jq,拥抱原生,其实不是瞎说的……

首先,ie浏览器用户越来越少,如今已经很少很少了,就算一般人的浏览器装了ie内核的,它们多半也有个极速模式……那就是谷歌内核的……

所以为了那一丢丢的用户,浏览器向下兼容变得不那么重要了……

与其做兼容,不如做引导,如ie下提示更换浏览器……

然后第二点,关于代码语法啥的,的确jq的语法很简洁,也长的比较好看,比如相同的操作一个id

jq:$('#id')​ 原生:document.getElementById('id')

​可以看到,虽然原生js的代码比较长,但是语义化很好啊,一看就知道get element by id ,就是取元素通过id……这理应是我们该提倡的……虽然dom多了会变得不好看,但是……

一旦dom操作很多了就不提倡操作dom了,更提倡vue、react这种不直接操作dom(操作虚拟dom)的方案了……​

然后关于ajax,jq的确封装了比较好用的方法,原生不太方便,但是现在我个人比较提倡fetch,而不是ajax,所以原生js里完全可以直接fetch替代ajax

所以jq的这个优势也不复存在了……

然后再说一下原生js的好处

首先就是性能好,这个真的没得说,毕竟是原生……

然后,原生js的api也在更新,现在的很多api都比较新比较能接受了……

再就是,在mvvm框架盛行的今天,我们不可能在这些框架里引入jq,但是却可以天然的写原生js没毛病……

所以……综上所述……

仅代表个人观点哈,不接受反驳(⊙o⊙)…

目前在写的个人项目的后台部分就是原生js的技术桟,甚至都没有用vue,毕竟后台嘛,简陋点没啥的√

抛弃JQ,回归原生js……的更多相关文章

  1. jq与原生js实现收起展开效果

    jq与原生js实现收起展开效果 (jq需自己加载) <!DOCTYPE html> <html> <head> <meta charset="UTF ...

  2. 导航栏中各按钮在点击当前按钮变色其他按钮恢复为原有色的实现方法(vue、jq、原生js)

    一.vue如何实现? 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...

  3. jq 与原生js 方法互相转换

    最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的.虽然jq很简单,但是也有兼容问题,js基础是很重要的,jq的成功当时是因为ie6.7.8.9.10.chrom ...

  4. jq 和 原生js进行传输文件ajax请求

    <body> <input id="file_upload" name="file_upload" type="file" ...

  5. JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)

    JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...

  6. 折腾一天,获取下列多选框的所有选中值,原生js可直接通过obj.val()来获取,可jq不行,要通过循环取值来获取;

    折腾一天,获取下列多选框的所有选中值,原生js可直接通过obj.val()来获取,可jq不行,要通过循环取值来获取;

  7. 原生JS与JQ获取元素的区别

    刚学JQ不久,有时候可能会把JS和JQ获取元素的方式搞错,接下来获取属性方法什么的就一发不可收拾了,现在把两者获取获取元素的代码整理下. 一.原生JS获取元素. 1.常用的三种方式获取元素对象(将指定 ...

  8. 原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度

    JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...

  9. jq商品展示图放大镜 and 原生js和html5写的放大镜效果 ~~效果不错

    <!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...

随机推荐

  1. C# Async/await 异步多线程编程

    using System; using System.Collections.Generic; using System.Linq; using System.Text; using System.N ...

  2. Jquery仿京东分类导航层简单实现

    <script src="/js/jquery-1.11.1.min.js" type="text/javascript"></script& ...

  3. 结束《Java编程思想》(Thinking in Java)自学的读后感(2017.10.15)

    首先划重点:这是一本Java的入门书. 自学前需要的条件:已经具备基本的计算机基础. 1)已经对一种编程语言比较熟悉: 2)有过四年计算机专业学习,或者三年以上的软件开发经验, 自学的方法: 1)完全 ...

  4. CSS样式设置语法全解,样式优先级、值和单位、字体、文本、块级元素,行内元素,替换元素、非替换元素、display、float、position、table、li、光标、边距边框、轮廓、颜色背景

    全栈工程师开发手册 (作者:栾鹏) 一个demo学会css css选择器全解 css操作语法全解 CSS样式设置语法全解: 样式优先级 1. !important标记的样式 > 内联样式(sty ...

  5. 线性布局(LinearLayout)

    线性布局(LinearLayout) 备注 match_parent填充布局单元内尽可能多的空间 wrap_content完整显示控件内容 orientation有两个值,horizontal水平显示 ...

  6. canvas图表详解系列(2):折线图

    本章建议学习时间4小时 学习方式:详细阅读,并手动实现相关代码(如果没有canvas基础,需要先学习前面的canvas基础笔记) 学习目标:此教程将教会大家如何使用canvas绘制各种图表,详细分解步 ...

  7. 吾八哥学Python(二):Python代码编辑器的选用

    Python开发环境配置好了,但发现自带的代码编辑器貌似用着有点不大习惯啊,所以咱们就找一个"好用的"代码编辑器吧,网上搜了一下资料,Python常用的编辑器有如下一些: 1. S ...

  8. mongdb单节点安装方法

    mongo单节点环境安装(linux) 安装包 下载地址: (https://www.mongodb.com/download-center) 用户权限/目录 创建 dbuser用户 groupadd ...

  9. OpenWRT(RT5350) 路由客户模式(Routed Client) ,设置防火墙开放UDP指定端口

    /* *功     能: 本文主要功能是设置OpenWRT(RT5350) 系统实现路由客户模式,无线连接上级路由, * 无线释放AP客户端,实现伪装的中继(子网段与上级路由网段不同),同时更改防火墙 ...

  10. 多平台Native库打入JAR包发布实战

    1.前言 在开发Java应用的过程中,经常会遇到需要使用C/C++等Native语言编译的动态库或静态库,在这些情况下往往需要将预先编译好的各平台库文件与JAR包一同发布,鉴于简洁的原则,我们可能会希 ...