vue解決jquery的痛點
首先我們需要明白和理解jquery和vue的設計初衷和理念。
-
jquery官網給出的開篇介紹是,jquery是一個快,小,功能豐富的js庫,它讓html文件遍歷和操作,事件處理,動畫,以及ajax等提供了簡單易用的API,並且可以在眾多瀏覽器中使用。
jQuery is a fast, small, and feature-rich JavaScript library. It makes
things like HTML document traversal and manipulation, event handling,
animation, and Ajax much simpler with an easy-to-use API that works
across a multitude of browsers.所有js庫要解決的問題*: 簡單語法(查詢DOM元素,對DOM元素進行操作)解決瀏覽器相容性問題
jquery這個js庫比其他js庫受歡迎的地方在於:所有一切都在jquery物件裡面,入口是查詢,結果是操作
庫,開發者自由控制,搭建前端
-
Vue (讀音 /vjuː/,類似於 view) 是一套用於構建使用者介面的漸進式框架。
所有js框架要解決的問題*: 應對需求變化,防止大面積重寫。讓開發者遵循框架的規範和規則構建專案,追求高效,團隊協作,程式碼利用率和可擴充套件性
vue這個js框架比其他js框架受歡迎的地方在於:元件化:一個大型頁面切分成一個一個更小的可控單元;方便後續優化,使用元件可以降低模組耦合度,元件所依賴的資源全部封裝在元件內部呼叫。
資料偵聽,雙向繫結:(js中有兩種方法可以偵測到變化,object.defineProperty和ES6的proxy)vue使用的是object.defineProperty.
我們之所以要觀察一個資料,是為了當資料發生變化時,可以通知到使用該資料的地方。先把使用該資料的地方收集起來(術語是收集依賴getter),當變化時,再觸發依賴setter
依賴收集到哪,陣列Dep,儲存依賴。
資料變化時,我們需要集中通知給各個地方,讓中介watcher來通知吧
客戶端路由:單頁面應用,不做就不需要,一個url對應一個應用
大規模狀態管理: 應用簡單時,一個基礎狀態和介面對映就可以解決問題,應用很大時,涉及多人合作,需要多個元件之間共享,多個元件需要去改動同一份狀態,如何使大規模應用高效執行。
構建工具:打包和工程構建
漸進式vue框架,自底向上增量開發,為什麼選擇vue而不是jquery
- 你不想用vue的資料驅動DOM變化,不想元件化,那你可以用vue當成一個js庫來使用,簡單的收集form表單,表單驗證。如果你碰到多次改需求,你會發現vue要改的程式碼比jquery少的多。
- 大膽一些,你想把整個頁面的dom用Vue來管理,如新聞列表用v-for來迴圈,評論互動有些複雜,你抽象成小元件,這個過程就會把關注點從原來的jquery dom操作變成關注資料變化。於是你開始用虛擬dom,資料雙向繫結,差量更新
- 你要做個webApp,於是你瞭解webpack vue-router,你發現前端可以控制路由了,vue-router單頁面卻可以切換元件,不是f5重新整理的感覺
- 滾動播放視訊,前端和後端的介面溝通很頻繁,大量的資料在元件中共享,你找解決方法,發現vueX處理資料在元件之間流動得心應手。
- 慢慢的你開始關注使用者資料增長,你發現第2部,新聞列表和評論整個頁面用vue管理開發很方便,但是頁面白屏時間長,類似這樣的底層頁對seo很不好。你開始考慮vue 2.0的SSR。為了保證團隊高質量輸出,你開始研究給vm寫單元測試….
綜以上5點,我真的不知道有什麼理由不用vue,因為你用了vue,你也可以用jquery啊,在vue中什麼時候用Jquery會更高效,答案是動畫。因為vue側重資料。
參考文獻:
- vue漸進式框架理解:https://www.zhihu.com/questio…
- vue核心功能原理解析https://www.cnblogs.com/dhsz/…
- 百度網盤視訊學習以及原始碼資源https://pan.baidu.com/s/1bpD6hUR 提取密碼 aebz