抛弃JQ,回归原生js……
之前我写过一篇文章叫做《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……的更多相关文章
- jq与原生js实现收起展开效果
jq与原生js实现收起展开效果 (jq需自己加载) <!DOCTYPE html> <html> <head> <meta charset="UTF ...
- 导航栏中各按钮在点击当前按钮变色其他按钮恢复为原有色的实现方法(vue、jq、原生js)
一.vue如何实现? 代码: <!DOCTYPE html> <html lang="en"> <head> <meta charset= ...
- jq 与原生js 方法互相转换
最近在用mui写页面,当然了在移动App里引入jq或zepto这些框架,肯定是极不理性的.虽然jq很简单,但是也有兼容问题,js基础是很重要的,jq的成功当时是因为ie6.7.8.9.10.chrom ...
- jq 和 原生js进行传输文件ajax请求
<body> <input id="file_upload" name="file_upload" type="file" ...
- JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性)
JS(原生js和jq方式)获取元素属性(自定义属性),删除属性(自定义属性) 以下内容: 一.获取元素的属性 二.设置元素的属性 三.删除元素的属性 一.获取元素的属性 1-原生JS 获取属性 .ge ...
- 折腾一天,获取下列多选框的所有选中值,原生js可直接通过obj.val()来获取,可jq不行,要通过循环取值来获取;
折腾一天,获取下列多选框的所有选中值,原生js可直接通过obj.val()来获取,可jq不行,要通过循环取值来获取;
- 原生JS与JQ获取元素的区别
刚学JQ不久,有时候可能会把JS和JQ获取元素的方式搞错,接下来获取属性方法什么的就一发不可收拾了,现在把两者获取获取元素的代码整理下. 一.原生JS获取元素. 1.常用的三种方式获取元素对象(将指定 ...
- 原生JS 和 JQ 获取滚动条的高度,以及距离顶部的高度
JQ:相对比较简便 获取浏览器显示区域(可视区域)的高度 : $(window).height(); 获取浏览器显示区域(可视区域)的宽度 : $(window).width(); 获取页面的文档高度 ...
- jq商品展示图放大镜 and 原生js和html5写的放大镜效果 ~~效果不错
<!DOCTYPE HTML><html lang="en-US"><head> <meta charset="UTF-8&qu ...
随机推荐
- db2备份还原
还原步骤:创建好数据库后进入该数据库 .restore db TSMESDB from D:\ICSS\dbData on D:\ICSS\dbData into TSMESDB redirect. ...
- pylot网站压力测试
windows下使用python进行网站压力测试,有两个必不可少的程序需要安装,一个是python,另一个是pylot.python是一个 安装软 件,用来运行python程序,而pylot则是pyt ...
- 谈谈我对php通信的理解及人生小感
故事背景: 小王和小甜是亲密无间的好朋友. 小王到自己QQ群里看到一个免单活动, 自己支付宝余额不足, 遂用小甜的手机淘宝先花150元购买了活动产品. 到货后商家告诉小王, 确认收货后提供旺旺账号.支 ...
- 多线程之Map:Hashtable HashMap 以及ConcurrentHashMap
1.Map体系参考:http://java.chinaitlab.com/line/914247.htmlHashtable是JDK 5之前Map唯一线程安全的内置实现(Collections.syn ...
- angular.js基础
内置指令 所有的内置指令的前缀都为ng,不建议自定义指令使用该前缀,以免冲突.首先从一些常见的内置指令开始.先列出一些关键的内置指令,顺便简单说说作用域的问题. ng-model 将表单控件和当前作用 ...
- [ACdream]小晴天老师系列——竖式乘
题目链接:http://acdream.info/contest?cid=1269#problem-C Problem Description 小晴天是ACdream团队中最牛的老师之一,他最擅长数学 ...
- [Bayesian] “我是bayesian我怕谁”系列 - Naive Bayes+prior
先明确一些潜规则: 机器学习是个collection or set of models,一切实践性强的模型都会被归纳到这个领域,没有严格的定义,’有用‘可能就是唯一的共性. 机器学习大概分为三个领域: ...
- 运行第一个Go Web框架
GO 语言的web框架很多,相对来说, Beego 框架,入门简单,文档齐全(中文),功能强大,本文以Beego 示例. Beego提供了详细的开发文档:http://beego.me/docs/in ...
- Lua的函数调用和协程中,栈的变化情况
Lua的函数调用和协程中,栈的变化情况 1. lua_call / lua_pcall 对于这两个函数,对栈底是没有影响的--调用的时候,参数会被从栈中移除,当函数返 回的时候,其返回值会从函数处 ...
- Leetcode题解(九)
28.Implement strStr()-------KMP算法(*) 题目 这道题目其实就是实现KMP算法,并且该算法也是比较经典的算法,需要很好的掌握: 贴上几个介绍字符串匹配的算法说明链接 h ...