Angular 狀態(tài)管理的演進(jìn)
如果應(yīng)用使用單個(gè)的控制器管理所有的狀態(tài),Angular 中的狀態(tài)管理將從單個(gè)有機(jī)的單元開始。如果是一個(gè)單頁應(yīng)用,一個(gè)控制器還有意義嗎?我們從冰河世紀(jì)掙脫出來,開始將視圖、控制器,甚至指令和路由拆分為更小的獨(dú)立的單位。這是巨大的改進(jìn),但是對于復(fù)雜的應(yīng)用來說,管理復(fù)雜的狀態(tài)仍然是一個(gè)問題。對于我們來說,在控制器,服務(wù),路由,指令和偶爾的模板中包含散步的狀態(tài)是很常見的??勺兊臓顟B(tài)本身不是邪惡的,但是共享的可變狀態(tài)則是災(zāi)難的入場券。
正如像 Angular 這樣的現(xiàn)代 Web 框架永遠(yuǎn)地改變了我們以 jQuer 為中心的應(yīng)用開發(fā)方式,React 從根本上改變了我們在使用現(xiàn)代 Web 框架時(shí)處理狀態(tài)管理的方式。Redux 是這種改變的前沿和核心,因?yàn)樗肓艘环N優(yōu)雅地,但是非常簡單的方式來管理應(yīng)用程序狀態(tài)。值得一提的是,Redux 不僅是一個(gè)庫,更重要的是它是一種設(shè)計(jì)模式,完全與框架無關(guān),更巧的是可以與 Angular 完美合作。
整個(gè)文章的靈感來自 Egghead.io – Getting Started with Redux series by Dan Abramov. 除了創(chuàng)始人的說明沒有更好的途徑學(xué)習(xí) Redux。它完全免費(fèi)并且改變了我的編程方式。
redux 的美妙之處在于它可以使用簡單的句子表達(dá)出來,總之,在我 “啊” 的時(shí)候就可以總結(jié)三個(gè)要點(diǎn)。
單個(gè)的狀態(tài)樹
redux 的基礎(chǔ)前提是應(yīng)用的整個(gè)狀態(tài)可以表示為網(wǎng)友評論