Vue是一個流行的JavaScript框架,它具有簡單易學(xué)、靈活高效的特點(diǎn),在前端開發(fā)中受到廣泛歡迎。Vue生態(tài)包括了眾多的插件和工具,以下是幾個常見的Vue生態(tài):
Vuex:Vuex是為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式。它可以幫助你管理應(yīng)用程序的所有組件的狀態(tài),并使用一些規(guī)則來維護(hù)該狀態(tài)。
Vue Router:Vue Router是Vue.js官方的路由管理器,它允許開發(fā)人員在單頁應(yīng)用程序(SPA)中定義不同的頁面和路由。
axios:axios是一個基于Promise的HTTP客戶端,用于與后端API交互。Vue中經(jīng)常使用axios進(jìn)行數(shù)據(jù)請求。
Element UI:Element UI是一套基于Vue.js 2.0的UI組件庫,提供了豐富的組件,包括表單、表格、對話框等等。
Vuetify:Vuetify 是一個專門為Vue.js設(shè)計的響應(yīng)式UI庫,以實(shí)現(xiàn) Material Design 規(guī)范為目標(biāo),提供了一系列高質(zhì)量的組件
Nuxt.js:Nuxt.js是一個基于Vue.js開發(fā)的通用應(yīng)用框架,可用于快速創(chuàng)建服務(wù)端渲染的Vue.js應(yīng)用程序。
Vue CLI:Vue CLI是官方提供的命令行工具,用于快速搭建和管理Vue項目。它支持簡單快捷地創(chuàng)建項目、約定式的目錄結(jié)構(gòu)、webpack配置等,并且集成了大量的開箱即用的插件和功能。
Vue Test Utils:Vue Test Utils是Vue.js官方提供的測試實(shí)用程序庫,可以幫助編寫從單元測試到端到端測試的不同類型的測試用例。
Vuex ORM:Vuex ORM是一個通過將ORM 模式引入 Vuex 狀態(tài)管理器來簡化狀態(tài)管理的輕松解決方法。
Storybook:Storybook是一個強(qiáng)大的UI組件開發(fā)環(huán)境,使你能夠在隔離的環(huán)境中瀏覽、測試、文檔化并交互式地開發(fā)組件,它也能夠和Vue完美集成。
VuePress:VuePress是一個基于Vue.js開發(fā)的靜態(tài)網(wǎng)站生成器,它專門為技術(shù)文檔而設(shè)計,并提供了豐富的主題和插件。
Vue-i18n:Vue-i18n是一個國際化插件,用于在Vue.js應(yīng)用程序中實(shí)現(xiàn)多語言支持。
VueDND:VueDND是一個基于Vue.js開發(fā)的拖放組件,可以用于實(shí)現(xiàn)交互式的拖放特效。
Buefy:Buefy是一個基于Bulma CSS框架和Vue.js的UI組件庫,能夠快速構(gòu)建現(xiàn)代感的Web應(yīng)用程序。
Vue-Multiselect:Vue-Multiselect是一個強(qiáng)大而易于使用的自定義下拉選擇組件,可以實(shí)現(xiàn)單選和多選功能。
Vue Apollo:Vue Apollo 是一個用于在 Vue.js 應(yīng)用程序中運(yùn)行 GraphQL 查詢的graphql庫。
Vuetable-2:Vuetable-2是一個靈活的、可自定義的基于Vue.js 2.x的數(shù)據(jù)表格插件,它支持過濾、排序、分頁等多種功能。
Vue Material:Vue Material 是一個 Material Design 風(fēng)格的 UI 組件庫,看起來非?,F(xiàn)代和專業(yè),并且對移動設(shè)備友好。
Vue-chartjs:Vue-chartjs是一個用戶友好的、靈活的Vue.js 2.x輕量級封裝組件,用于圖表渲染。
vue-datetime-picker:vue-datetime-picker是一個日期時間選擇器,用于Vue.js應(yīng)用程序,在業(yè)務(wù)場景中非常實(shí)用。
VueLazyload:VueLazyload是一個輕量級的Vue.js 圖片懶加載插件,可以實(shí)現(xiàn)圖片的延遲加載。
Vue-awesome-swiper:Vue-awesome-swiper 是基于swiper封裝的 Vue Component,令制作輪播圖非常方便。
Vue-meta:Vue-meta 是用于管理應(yīng)用程序頭部標(biāo)簽和元數(shù)據(jù)的插件。在單頁應(yīng)用程序中,控制應(yīng)用程序的元信息(如標(biāo)題、關(guān)鍵字和描述)對于在搜索引擎結(jié)果中得到更高的排名至關(guān)重要。
vue-infinite-loading:vue-infinite-loading 是一款強(qiáng)大的無限滾動插件,可供Vue開發(fā)者使用。
Vuejs-datepicker:Vuejs-datepicker是Vue.js日期選擇器組件,簡單易用,并支持多種自定義選項。
Vue.js 3相對于Vue.js 2來說,不僅在語法和組件性能上進(jìn)行了升級,其生態(tài)系統(tǒng)也更加完善。以下是Vue.js 3的一些生態(tài):
Vuex 4:與Vue.js 3兼容的 Vuex 狀態(tài)管理庫。
Vue Router 4:專門為Vue.js 3開發(fā)的路由管理器,幫助您定義和管理單頁應(yīng)用程序中的頁面和路由。
Vite: Vite 是一個快速并且簡單上手、基于Rollup構(gòu)建工具的前端開發(fā)服務(wù)器,被認(rèn)為是Vue3項目的最佳選擇。
Pinia:Pinia是一個新的基于函數(shù)式編程的狀態(tài)管理庫,使用 TypeScript 編寫,它可以取代Vuex, 更嚴(yán)格遵循了 Vue.js 的響應(yīng)規(guī)則。
Windi CSS:Windi CSS是一個類似Tailwind CSS的CSS框架,可與 Vue.js 3緊密集成,有助于快速構(gòu)建出現(xiàn)代UI。
Element Plus:Element Plus 是一個由華佗天團(tuán)維護(hù),基于Element UI 2.x設(shè)計的開源 UI 組件庫,可用于快速創(chuàng)建現(xiàn)代感的企業(yè)級應(yīng)用程序。
VueUse:一個社區(qū)驅(qū)動的組合式函數(shù)和狀態(tài)管理庫,內(nèi)置了許多常用工具函數(shù)和Vue組件。
Vue Test Utils Next:Vue.js官方測試實(shí)用程序庫的下一代,提供整潔、簡單的 API,可做到易于使用以及針對Vue.js特性的最佳高效測試。
Vue Final Modal:一個開箱即用的簡單modal框架,支持多種自定義選項。
The Progressive
JavaScript Framework:一個新型的漸進(jìn)式JavaScript框架,想要解決React或
Angular的困境,并具有以上兩者的優(yōu)點(diǎn),因此備受期待。
Slidev:一個趨向Vue滑動演示生成器,確保建立現(xiàn)代感且交互性強(qiáng)的演示文稿。VueUse:一個社區(qū)驅(qū)動的組合式函數(shù)和狀態(tài)管理庫,內(nèi)置了許多常用工具函數(shù)和Vue組件。
Vue Test Utils Next:Vue.js官方測試實(shí)用程序庫的下一代,提供整潔、簡單的 API,可做到易于使用以及針對Vue.js特性的最佳高效測試。
Vue Final Modal:一個開箱即用的簡單modal框架,支持多種自定義選項。
The Progressive
JavaScript Framework:一個新型的漸進(jìn)式JavaScript框架,想要解決React或
Angular的困境,并具有以上兩者的優(yōu)點(diǎn),因此備受期待。
Slidev:一個趨向Vue滑動演示生成器,確保建立現(xiàn)代感且交互性強(qiáng)的演示文稿。
vuex store里有哪些屬性方法?
Vuex是一個專為Vue.js應(yīng)用程序開發(fā)的狀態(tài)管理模式。其核心是一個store,包含著應(yīng)用中大部分的狀態(tài)(state)。Vuex的store中包含著以下屬性方法:
-
state:存儲應(yīng)用的狀態(tài)數(shù)據(jù)。它可以是對象、數(shù)組或者是其他原始數(shù)據(jù)類型。
-
getters:獲取存儲在state中的數(shù)據(jù)。它們類似于是store的計算屬性。
-
mutations:用于修改state中的數(shù)據(jù)。mutations必須是同步函數(shù)。
-
actions:用于提交mutations。actions可以異步地調(diào)用mutations,以處理復(fù)雜的業(yè)務(wù)邏輯中的異步操作。
-
modules:將store拆分為多個子模塊。每個子模塊都具有自己的state,getters,mutations和actions。
除此之外,Vuex store還包含以下輔助方法:
-
commit:用于提交mutations的方法。
-
dispatch:用于提交actions的方法。
-
subscribe:用于訂閱store的變化。
-
replaceState:用于替換store中的數(shù)據(jù)。
-
registerModule和unregisterModule:用于動態(tài)注冊和注銷模塊。
-
strict:一個布爾值,表示是否啟用Vuex的嚴(yán)格模式。在嚴(yán)格模式下,任何對store的修改必須通過mutations進(jìn)行,否則會拋出錯誤。
ES6語法學(xué)習(xí)(把每一個都寫一遍)
? ? ? ? 1.語法聲明方式變化:
? ? ? ? ?let const聲明指令
? ? ? ? 2.Arrow function(箭頭函數(shù))
? ? ? ? 3.解構(gòu)賦值 rest
? ? ? ? 4.字符串模板?
es6字符串模板的例子
當(dāng)你使用字符串模板,你可以創(chuàng)建一個帶有嵌入式表達(dá)式的字符串。使用反引號(``)或雙引號(“”) 來將字符串值括起來,然后使用 ${ } 語法將表達(dá)式嵌入到字符串中。在表達(dá)式中,你可以使用任何有效的 JavaScript 表達(dá)式,可以引用變量、函數(shù)、對象等,然后它將計算表達(dá)式的結(jié)果,并將結(jié)果嵌入到字符串。這使代碼更易于編寫和閱讀。
以下是一個簡單的使用ES6字符串模板的例子:
const firstName = 'Alice';
const lastName = 'Smith';
const age = 35;
const message = `Hello, my name is ${firstName} ${lastName} and I'm ${age} years old.`;
console.log(message); // Output: Hello, my name is Alice Smith and I'm 35 years old.
在這個例子中,我們定義了三個變量:firstName
,lastName
和?age
。然后,我們使用?message
?常量來創(chuàng)建一個字符串,這個字符串包含了三個嵌入式表達(dá)式,它們使用?${}
?語法進(jìn)行包裹。最后,我們使用?console.log
?輸出字符串。
可以看到,${firstName}
,?${lastName}
, 和?${age}
?會被替換成變量的值,結(jié)果字符串就是?Hello, my name is Alice Smith and I'm 35 years old.
。 這是一個簡單而強(qiáng)大的 ES6 字符串模板的例子,它使我們可以使用變量和表達(dá)式創(chuàng)建動態(tài)和可讀性更高的字符串。
5.擴(kuò)展操作符
6.promise、async、await
7.模塊化、class
8.map、set
9.字符串和數(shù)組的一些方法(了解至少2種以上的數(shù)組排序算法)
10.基礎(chǔ)js語法原理:new,bind,call,apply的實(shí)現(xiàn)原理
11.防抖節(jié)流的原理和寫法
ES6核心原理(實(shí)現(xiàn))
Vue.js是一款流行的JavaScript框架,它的核心原理是數(shù)據(jù)驅(qū)動以及組件化架構(gòu)。
數(shù)據(jù)驅(qū)動意味著Vue.js提供了一種機(jī)制來自動更新DOM(文檔對象模型)元素,無需手動去修改DOM元素。Vue.js使用了一種雙向綁定的機(jī)制,通過將數(shù)據(jù)傳遞給Vue實(shí)例中的組件,任何組件中的數(shù)據(jù)變化都能夠自動更新到視圖(即DOM)中。這是通過使用虛擬DOM(Virtual DOM)來實(shí)現(xiàn)的。虛擬DOM是Vue.js使用的一種抽象的表示方法,它是一個JavaScript對象,用于描述真實(shí)DOM的狀態(tài)。當(dāng)數(shù)據(jù)發(fā)生變化時,Vue.js會計算出新的虛擬DOM并比較它與舊的虛擬DOM的差異,然后僅更新只需要更新的部分。
組件化架構(gòu)使得Vue.js具有高度的可復(fù)用性和可擴(kuò)展性。在Vue.js中,每個組件都是一個獨(dú)立的實(shí)體,它擁有自己的狀態(tài)和行為。通過將組件構(gòu)建成樹形結(jié)構(gòu),應(yīng)用程序的整體結(jié)構(gòu)和功能可以以更高層次的方式描述和組織。組件化架構(gòu)在同時處理UI復(fù)雜度和應(yīng)用程序組織方面變得更加容易,使應(yīng)用程序的維護(hù)和測試變得更加簡單。
在Vue.js的實(shí)現(xiàn)中,最核心的部分包括以下幾個方面:
-
依賴追蹤系統(tǒng):Vue.js使用依賴追蹤來檢測數(shù)據(jù)變化并更新視圖。在Vue.js中,每個組件實(shí)例都維護(hù)了一個依賴追蹤系統(tǒng),用于跟蹤其依賴的數(shù)據(jù)。當(dāng)組件渲染時,Vue.js會記錄該組件訪問的所有數(shù)據(jù),以確保它們在其響應(yīng)式系統(tǒng)中被標(biāo)記為已使用。當(dāng)這些數(shù)據(jù)發(fā)生變化時,組件將知道重新渲染自身。
-
模板編譯系統(tǒng):Vue.js使用模板編譯器將模板轉(zhuǎn)換為渲染函數(shù)。模板編譯器將模板解析為抽象的語法樹,并將其轉(zhuǎn)換為渲染函數(shù),以實(shí)現(xiàn)組件的渲染。Vue.js還可以使用運(yùn)行時編譯,以便在運(yùn)行時動態(tài)編譯和渲染組件。
-
響應(yīng)式系統(tǒng):Vue.js使用一個響應(yīng)式系統(tǒng)來追蹤應(yīng)用程序中的數(shù)據(jù)變化并實(shí)時更新視圖。Vue.js內(nèi)部使用了ES6 Object.defineProperty方法來為數(shù)據(jù)對象添加getter和setter來監(jiān)聽數(shù)據(jù)變化,從而觸發(fā)視圖的重新渲染。
-
虛擬DOM渲染:虛擬DOM是一個輕量級的JavaScript對象,用于描述真實(shí)DOM的狀態(tài)。Vue.js使用虛擬DOM來實(shí)現(xiàn)組件的渲染,通過Virtual DOM的比較算法,可以最小化DOM操作數(shù)量,以提高渲染性能。
Vue的DIFF算法:
指的是在進(jìn)行Virtual DOM比較時,Vue會通過算法盡量減少頁面重新渲染的節(jié)點(diǎn)數(shù),提高頁面渲染的性能。Vue的DIFF算法使用了一種叫做"雙端比較"的策略,它可以同時從新舊兩個虛擬節(jié)點(diǎn)列表的頭部和尾部開始比較,找到最長的共同子序列,從而對需要更新的節(jié)點(diǎn)進(jìn)行標(biāo)記,盡量減少了頁面上需要重新渲染的節(jié)點(diǎn)數(shù)。
雙端比較的具體實(shí)現(xiàn)如下:
1.首先比較兩個列表的頭部節(jié)點(diǎn),如果節(jié)點(diǎn)相同,則進(jìn)行更新,否則比較尾部節(jié)點(diǎn),如果相同則進(jìn)行更新,否則進(jìn)入下一步。
2.接下來比較新列表的頭部節(jié)點(diǎn)與舊列表的尾部節(jié)點(diǎn),如果相同則進(jìn)行更新,否則比較舊列表的頭部節(jié)點(diǎn)與新列表的尾部節(jié)點(diǎn),如果相同則進(jìn)行更新。
3.如果以上比較都沒有找到相同的節(jié)點(diǎn),則循環(huán)遍歷新列表中的每個節(jié)點(diǎn),查找是否有和舊列表相同的節(jié)點(diǎn),如果有則進(jìn)行更新,如果沒有則插入新節(jié)點(diǎn)。
雖然Vue的DIFF算法可以減少頁面重繪的次數(shù),但是也有一定的性能損耗,因?yàn)樵谶M(jìn)行節(jié)點(diǎn)的比較時需要尋找最長的共同子序列,這個過程需要花費(fèi)一定的時間。因此,在實(shí)際開發(fā)中,需要根據(jù)頁面復(fù)雜度和更新頻率等因素綜合考慮是否使用Vue的DIFF算法。
?虛擬dom是什么
虛擬 DOM (Virtual DOM)是指通過 JavaScript 對象來描述真實(shí)的 DOM 結(jié)構(gòu),并通過比較新舊兩個虛擬 DOM 之間的差異來批量更新真實(shí) DOM,從而提高 DOM 操作的效率和性能。
在 Web 開發(fā)中,數(shù)據(jù)的變化經(jīng)常會帶來 DOM 的改變,而頻繁的 DOM 操作會導(dǎo)致頁面的重排和重繪,影響渲染性能和用戶體驗(yàn)。為了解決這個問題,Virtual DOM 的出現(xiàn)為開發(fā)者提供了一種更高效的方式。使用虛擬 DOM,我們可以先將更新的數(shù)據(jù)通過生成新的虛擬 DOM 樹來描述修改后的 DOM 結(jié)構(gòu),然后通過比較新舊兩個虛擬 DOM 樹之間的差異,僅更新發(fā)生變化的部分,最終僅僅操作必要的部分,減少了瀏覽器重排、重繪的開銷,提高了渲染性能和用戶體驗(yàn)。
雖然虛擬 DOM 需要額外的計算和操作,但是由于它僅包含 DOM 樹的數(shù)據(jù)結(jié)構(gòu),相比直接操作真實(shí) DOM,虛擬 DOM 的計算效率更高,更新速度更快。而且通過 diff 算法優(yōu)化更新,可以避免了大量無意義的 DOM 操作。文章來源:http://www.zghlxwxcb.cn/news/detail-420815.html
當(dāng)然,在實(shí)際開發(fā)中,虛擬 DOM 不僅僅是最終的解決方案。它常常是一種解決復(fù)雜組件維護(hù)和性能問題的手段,為了更好的性能表現(xiàn),它經(jīng)常會與其他優(yōu)化策略進(jìn)行配合。文章來源地址http://www.zghlxwxcb.cn/news/detail-420815.html
到了這里,關(guān)于【DAY43-1】vue知識整理的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!