2021/10/9 整理
現在前端已經進入了 MVVM 時代,但 jQuery 並不會退出歷史舞台,即使沒人用 XP、Win7 操作系統,即使所有人都用 Chrome 也不會。jQuery 手工操作已經存在的 DOM,操作比較精細,性能好但開發效率低,瀏覽器兼容較好,各個門戶主要還是用 jQuery。
MVVM 解決的是開發效率問題,構建複雜表單比較順手,大大降低了手工操作 DOM 的代碼量,適合內部應用,管理後台,但 MVVM 不是萬能的,缺點是
1. 要實現 DATA 變化的雙向綁定,一般瀏覽器兼容差
2. DOM 動態生成無法 SEO,搜索引擎搜不到
3. 通過數據操作 DOM 實質上不夠精細,有一點性能上的損耗
jQuery 解決的是遠古時代的瀏覽器兼容問題,將 DOM 操作做了一層兼容性封裝,但其用法本質上與直接使用原生 JS 接口沒有什麼不同。
1. 原生操作 DOM 不可能消失,雖然已經有了 document.querySelectorAll(selector),但有沒有覺得還是 $(selector) 更方便?雖然有了 element.addEventListener(event, handler) 但 $(select).on(event, handler) 是不是更簡潔?
2. jQuery 有一個強大的前端生態
畢竟流行了十幾年,目前很多複雜前端組件、框架都基於 jQuery,比如說編輯器,日期選擇器,自動提示等,你可以用 MVVM 來重寫,但動態渲染 DOM 與穩定性 DOM 有先天的性能差距,越複雜的控件,MVVM 的性能損失越明顯。
而且基於 jQuery 相當於基於原生 JavaScript,jQuery 可以視為原生 API 的一層封裝,以後沒有瀏覽器兼容問題了,自己實現一個 jQuery 適配器即可,比如 zepto,所有基於 jQuery 的組件可以直接用。