jQuery和React/Vue们的历史意义
2018-11-21 本文已影响4人
子龙0322
据说在浏览器的上古时代便诞生了网页制作的三剑客:Dreamweaver、Fireworks和Flash。
噢...搞错了,是HTML、CSS和JavaScript,三位剑客各司其职,使得浏览器世界得以正常运行:
~
从图来看,JS才是真正的多面手,其通过API操作HTML和CSS。
但我在学习原生DOM API的时候,这些API的冗长和繁琐无数次使我感到疲惫,而使我更加疲惫的是IE的各种奇怪特性...
因浏览器初级阶段的这些问题,jQuery 才顺势而生,大放异彩!它极大地提高了开发的便利性,如:
- 简化了原生API那冗长的命名,通过链式调用既方便了代码的书写又提高了可读性。
- 解决了部分兼容性问题。
- 对 ajax 等一些常用功能的封装。
jQuery 的横空出世一度让人兴奋不已,而在小富即安不久后,慢慢地发现,就算有此等神器,还是会常常沙场折戟:
如,前端请求到的数据要转变为HTML时要写大量操作DOM的代码,而这些代码的强壮性与可复用性都很差,即要实现「数据与UI同步」很难。
再如,JS修改HTML往往意味着整棵DOM树的销毁与重建,这非常耗费性能。
再再如,因变量的全局污染,使得模块化或多人协作都非常困难。
再再再如,。。。
基于浏览器中级阶段的这些问题, React/Vue 等 MV*M 架构的框架才顺势而生,大放异彩!它们主要解决的问题有:
- 开发的便利性:基于MVVM模式的思想,将数据(Model)映射至HTML(View)并保持同步(「数据与UI同步」),使得开发人员只需关注和操作数据(Model)就可操作DOM树了。
- 性能的极大提升:通过 虚拟DOM + Diff算法,使得此类框架在更改DOM树前先判断DOM树的哪部分发生了变动,进而只更改变动的那部分。
- 模块化:经由 node_modules 到各大框架的尝试,使得模块化开发已在前端界彻底落地。
回顾历史,技术发展的大方向无外乎:提升开发的简易性、提升性能、提升技术的应用广度,即更易、更快、更广!
在个人粗浅看来,web在“更易”的方向上,MVVM框架+ES6+node工具已使得开发变得非常容易了。
而前端的“更快”和“更广”还是有巨大的提升空间,比如:
- 更快:WebAssembly、Web Worker、ArrayBuffer等等
- 更广:React-Native、Weex、Electron、PWA、Deno、Aframe、小程序等等
从历史展望未来,JS极有可能成为横跨各平台前端的通用语言。
当然现在JS还有诸多问题,这可能也是为什么前端在飞速发展的原因吧。
毕竟,宏大愿景就在前面,又怎能不加速向前?