使用vuex的時候是如果您需要建立是一個中大型單頁應用,您很可能會考慮如何更好地在元件外部管理狀態,Vuex將會成為自然而然的選擇。
本教學操作環境:windows7系統、Vue2.9.6版,此方法適用於所有品牌電腦。
狀態管理
隨著 JavaScript 單頁應用程式開發日趨複雜,JavaScript 需要管理比任何時候都要多的 state (狀態)。這些 state 可能包括伺服器回應、快取資料、本地產生尚未持久化到伺服器的數據,也包括 UI 狀態,如啟動的路由,被選中的標籤,是否顯示載入動效或分頁器等等。
管理不斷變化的 state 非常困難。如果一個 model 的變化會引起另一個 model 變化,那麼當 view 變化時,就可能引起對應 model 以及另一個 model 的變化,依次地,可能會引起另一個 view 的變化。直至你搞不清楚到底發生了什麼事。 state 在什麼時候,由於什麼原因,如何改變已然不受控制。當系統變得錯綜複雜的時候,想重現問題或增加新功能就會變得舉步維艱。
Vuex 是一個專為 Vue.js 應用程式開發的狀態管理模式。它採用集中式儲存管理應用的所有元件的狀態,並以相應的規則保證狀態以一種可預測的方式變更。
在應用程式中,元件之間的通訊其實是歸根於應用的狀態管理;而應用的狀態是來自多方面的,如何對狀態進行管理,提高程式碼的可維護性,提升開發效率。 Vue 的核心庫只關注視圖層,單一文件元件,其模板、邏輯和樣式是內部耦合的,側重於資料和視圖的同步;Vue 本身並沒有對資料狀態的管理進行處理,但其提供了另一個解決方案Vuex,一個集中式狀態管理的函式庫;也就是說,你可能不需要Vuex,它只是對你套用狀態管理的一個函式庫。
Vuex 狀態自管理應用程式包含以下幾個部分:
state,驅動應用程式的資料來源;
view,以宣告方式將state 對應到檢視;
actions,回應在view 上的使用者輸入所導致的狀態變更。
如上圖,Vuex為Vue Components建立起了一個完整的生態圈,包括開發中的API呼叫一環。圍繞著這個生態圈,簡單介紹一下各模組在核心流程中的主要功能:
Vue Components:Vue元件。 HTML頁面上,負責接收使用者操作等互動行為,執行dispatch方法觸發對應action進行回應。
dispatch:操作行為觸發方法,是唯一能執行action的方法。
actions:操作行為處理模組。負責處理Vue Components接收到的所有互動行為。包含同步/非同步操作,支援多個同名方法,依照註冊的順序依序觸發。向後台API請求的操作就在這個模組中進行,包括觸發其他action以及提交mutation的操作。此模組提供了Promise的封裝,以支援action的鍊式觸發。
commit:狀態改變提交操作方法。對mutation進行提交,是唯一能執行mutation的方法。
mutations:狀態改變操作方法。是Vuex修改state的唯一建議方法,其他修改方式在嚴格模式下將會報錯。此方法只能進行同步操作,且方法名稱只能全域唯一。操作之中會有一些hook暴露出來,以進行state的監控等。
state:頁面狀態管理容器物件。集中儲存Vue components中data物件的零散數據,全域唯一,以進行統一的狀態管理。頁面顯示所需的資料從該物件中讀取,利用Vue的細粒度資料回應機制來進行高效率的狀態更新。
getters:state物件讀取方法。圖中沒有單獨列出這個模組,應該被包含在了render中,Vue Components透過此方法讀取全域state物件。
集中式狀態管理的好處
相對於分治(碎片化)的狀態管理,多個狀態分散的跨越在不同元件互動在各個角落,每個View 會有相對應的Model 維護狀態;而集中式管理模式則用於將分散於元件的狀進行集中化管理,提供一個全域的store 儲存管理應用程式的狀態。集中式的狀態管理可以讓整體的狀態變化更加明晰,尤其是配合各自的 devtools。
我應該在什麼情況下使用 Vuex?
雖然 Vuex 可以幫助我們管理共享狀態,但也附帶了更多的概念和框架。這需要對短期和長期效益進行權衡。
If you don't plan to develop a large single-page application, using Vuex may be cumbersome and redundant. It's true - if your app is simple enough, you're probably better off not using Vuex. A simple global event bus is all you need. However, if you need to build a medium to large single page application, you will most likely be thinking about how to better manage state outside the component, and Vuex will be a natural choice.
Related free learning recommendations: JavaScript (video)
以上是什麼時候使用vuex的詳細內容。更多資訊請關注PHP中文網其他相關文章!

JavaScript在Web開發中的主要用途包括客戶端交互、表單驗證和異步通信。 1)通過DOM操作實現動態內容更新和用戶交互;2)在用戶提交數據前進行客戶端驗證,提高用戶體驗;3)通過AJAX技術實現與服務器的無刷新通信。

理解JavaScript引擎內部工作原理對開發者重要,因為它能幫助編寫更高效的代碼並理解性能瓶頸和優化策略。 1)引擎的工作流程包括解析、編譯和執行三個階段;2)執行過程中,引擎會進行動態優化,如內聯緩存和隱藏類;3)最佳實踐包括避免全局變量、優化循環、使用const和let,以及避免過度使用閉包。

Python更適合初學者,學習曲線平緩,語法簡潔;JavaScript適合前端開發,學習曲線較陡,語法靈活。 1.Python語法直觀,適用於數據科學和後端開發。 2.JavaScript靈活,廣泛用於前端和服務器端編程。

Python和JavaScript在社區、庫和資源方面的對比各有優劣。 1)Python社區友好,適合初學者,但前端開發資源不如JavaScript豐富。 2)Python在數據科學和機器學習庫方面強大,JavaScript則在前端開發庫和框架上更勝一籌。 3)兩者的學習資源都豐富,但Python適合從官方文檔開始,JavaScript則以MDNWebDocs為佳。選擇應基於項目需求和個人興趣。

從C/C 轉向JavaScript需要適應動態類型、垃圾回收和異步編程等特點。 1)C/C 是靜態類型語言,需手動管理內存,而JavaScript是動態類型,垃圾回收自動處理。 2)C/C 需編譯成機器碼,JavaScript則為解釋型語言。 3)JavaScript引入閉包、原型鍊和Promise等概念,增強了靈活性和異步編程能力。

不同JavaScript引擎在解析和執行JavaScript代碼時,效果會有所不同,因為每個引擎的實現原理和優化策略各有差異。 1.詞法分析:將源碼轉換為詞法單元。 2.語法分析:生成抽象語法樹。 3.優化和編譯:通過JIT編譯器生成機器碼。 4.執行:運行機器碼。 V8引擎通過即時編譯和隱藏類優化,SpiderMonkey使用類型推斷系統,導致在相同代碼上的性能表現不同。

JavaScript在現實世界中的應用包括服務器端編程、移動應用開發和物聯網控制:1.通過Node.js實現服務器端編程,適用於高並發請求處理。 2.通過ReactNative進行移動應用開發,支持跨平台部署。 3.通過Johnny-Five庫用於物聯網設備控制,適用於硬件交互。

我使用您的日常技術工具構建了功能性的多租戶SaaS應用程序(一個Edtech應用程序),您可以做同樣的事情。 首先,什麼是多租戶SaaS應用程序? 多租戶SaaS應用程序可讓您從唱歌中為多個客戶提供服務


熱AI工具

Undresser.AI Undress
人工智慧驅動的應用程序,用於創建逼真的裸體照片

AI Clothes Remover
用於從照片中去除衣服的線上人工智慧工具。

Undress AI Tool
免費脫衣圖片

Clothoff.io
AI脫衣器

AI Hentai Generator
免費產生 AI 無盡。

熱門文章

熱工具

PhpStorm Mac 版本
最新(2018.2.1 )專業的PHP整合開發工具

SAP NetWeaver Server Adapter for Eclipse
將Eclipse與SAP NetWeaver應用伺服器整合。

SublimeText3 英文版
推薦:為Win版本,支援程式碼提示!

Atom編輯器mac版下載
最受歡迎的的開源編輯器

Dreamweaver Mac版
視覺化網頁開發工具