战胜了所有对手,却输给了时代。MVVM--jQuery永远的痛。
前言
第二次浏览器战争中,随着以 Firefox 和 Opera 为首的 W3C 阵营与 IE 对抗程度的加剧,浏览器碎片化问题越来越严重,不同的浏览器执行不同的标准,对于开发人员来说这是一个恶梦。为了解决浏览器兼容性问题,Dojo、jQuery、YUI、ExtJS、MooTools 等前端Framework 相继诞生。前端开发人员用这些 Framework 频繁发送 AJAX 请求到后台,在得到数据后,再用这些 Framework 更新 DOM 树。其中,jQuery 独领风骚,几乎成了所有网站的标配。Dojo、YUI、ExtJS 等提供了很多组件,这使得开发复杂的企业级 Web 应用成为可能。
正文
mvvm的出现
jquery可以说在dom操作领域做的很棒了,几乎统治了一个时代,甚至影响了w3c,dom api中的querySelector就有jq的影子。但是,如今使用jq的公司越来越少了,但这并不是说在dom操作领域有更好地库,而是因为mvvm的出现。dom操作是业务无关的逻辑,不应该出现在业务的代码中,虽然使用jq简化了很多,但是代码依然是难以维护和复用的,直到mvvm的出现,把数据和视图的绑定变成了自动化的操作,进而把dom操作从业务代码中移除。业务代码因此变得更加的纯粹,也更容易复用。
jQuery的没落
jQuery在dom操作领域已经做得很好了,但是它不符合技术发展的一般规律,所以最终肯定是会被取代的,就像大润发战胜了所有的对手,却在互联网时代被阿里收购一样。只是因为它做事情的方式不是最佳的,对开发效率和代码复用性的追求最终导致了jquery的淘汰。
从jquery帝国一统,到如今mvvm诸雄割据,对效率和代码复用性的要求对技术做出了选择,顺应这个趋势的技术才能长盛不衰。jQuery战胜了dom操作领域的所有对手,只是输给了时代。
结尾
其实,技术的发展趋势就是追求更高的复用性,更简便的业务代码写法,所以最终都会要求跨平台、都会彻底分离非业务逻辑。jvm上的语言持续的火了10多年,java长期霸占语言排行榜榜首,很大的原因就是因为jvm的跨平台,这是技术发展的趋势,就像node的libuv平台层、react的vdom、游戏引擎的多端打包等一样,随着各种端和平台越来越多,跨平台几乎是对一个新技术基本的要求。业务代码应该是纯粹的,任何业务代码都应该独立出去作为可复用资源而存在。比如dom操作的代码很多时候是业务无关的,所以mvvm实现了双向自动的绑定之后,逐渐的成为主流,jquery不符合这个趋势,所以也逐渐走向没落。
战胜了所有对手,却输给了时代。MVVM--jQuery永远的痛。的更多相关文章
- 从此sudo不再输密码
#sudo visudo 最后一次输入密码. 在最后一行加入: xxx ALL=NOPASSWD: ALL xxx即为你当前使用的用户名,Ctrl+X,保存退出. 从此告别每次都要输密码的时代.
- 《Xenogears》(异度装甲)隐含的原型与密码
<Xenogears>(异度装甲)隐含的原型与密码 X 彩虹按:一种高次元的“生命体”,因“事故”被抓来当成“超能源”,其实那不只是“无限的能源”而已,“它”是有意志的!在我们眼里看来,这 ...
- 为啥JQuery被淘汰了?
摘要: 技术进步永不止步. 原文:jQuery的没落和技术发展的一般规律 作者:凌霄光 Fundebug经授权转载,版权归原作者所有. jQuery的成就 jQuery是一个伟大的库, 它解决了dom ...
- 二模12day2解题报告
T1.笨笨玩糖果(sugar) 有n颗糖,两个人轮流取质数颗糖,先取不了的(0或1)为输,求先手能否必胜,能,输出最少几步肯定能赢:不能,输出-1. 一开始天真的写了一个dp,f[i]表示i颗糖最少取 ...
- 博弈SG
先转一篇看得比较懂的,以后有时间自己再归纳下 转自:http://blog.csdn.net/logic_nut/article/details/4711489 博弈问题若你想仔细学习博弈论,我强烈推 ...
- 编程之美----NIM游戏
: 博弈游戏·Nim游戏 时间限制:10000ms 单点时限:1000ms 内存限制:256MB 描述 今天我们要认识一对新朋友,Alice与Bob.Alice与Bob总是在进行各种各样的比试,今天他 ...
- UVa 10561 - Treblecross
http://uva.onlinejudge.org/index.php?option=com_onlinejudge&Itemid=8&page=show_problem&p ...
- 【转】博弈问题及SG函数(真的很经典)
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...
- (转)博弈问题与SG函数
博弈问题若你想仔细学习博弈论,我强烈推荐加利福尼亚大学的Thomas S. Ferguson教授精心撰写并免费提供的这份教材,它使我受益太多.(如果你的英文水平不足以阅读它,我只能说,恐怕你还没到需要 ...
随机推荐
- 程序向informix数据库插入text类型的中文乱码问题
部署应用的Linux服务器的编码格式为utf-8.但是数据库的编码格式为Gbk.所以导致的乱码.但是其他类型的数据中文并不乱码. 通过图片中修改编码格式,可以解决,导致的后果就是tomcat的日志输出 ...
- Java文件I/O简单介绍
目录 一.File类 1.1 构造方法 1.2 常用方法 1.3 例子 二.基础I/O:字节流.字符流 2.1 字节流 2.1.1 字节输出流 OutputStream 2.1.2 FileOutpu ...
- HTML5 socket
client: <!DOCTYPE html> <html> <head> <title></title> <meta http-eq ...
- Django GIS SQL注入漏洞(CVE-2020-9402)
影响版本 Django 1.11.29之前的1.11.x版本.2.2.11之前的2.2.x版本和3.0.4之前的3.0.x版本中存在SQL注入漏洞 提示有admin.vuln.vuln2,3个页面,存 ...
- Nacos 自动更新配置不生效问题
版本 Nacos 1.4.1 SpringCloud 2020.0.3 解决方案 bootstrap.properties 增加应用名配置即可 spring.application.name=serv ...
- netty系列之:netty中的Channel详解
目录 简介 Channel详解 异步IO和ChannelFuture Channel的层级结构 释放资源 事件处理 总结 简介 Channel是连接ByteBuf和Event的桥梁,netty中的Ch ...
- scrapy 错误:Missing scheme in request url: %s' % self._url
先说报错原因:使用了和start_urls同名的参数 我通过scral crawl projename -a start_urls=http:example.com来传start_urls,然后想在项 ...
- TypeScript学习笔记(四)装饰器
目录 一.装饰器的作用 二.类装饰器 1. 普通装饰器 为类扩展属性和方法 使用装饰器修改属性和重写方法 2. 装饰器工厂 三.属性装饰器 四.方法装饰器 使用方法装饰器对方法进行扩展 五.方法参数装 ...
- C++ //函数调用运算符重载 (仿函数)
1 //函数调用运算符重载 2 3 #include <iostream> 4 #include <string> 5 using namespace std; 6 7 //函 ...
- python3.7安装和pycharm安装教程. 以及pycharm的破解教程
前言: 供对python初学者查阅, pycharm破解教程参阅了: https://blog.csdn.net/u014044812/article/details/78727496 1. 安装py ...