# 遷移到 Redux
Redux 不是一個整體的框架,而是一系列的約定和[一些讓他們協同工作的函數](#)。你的 Redux 項目中的主要代碼不會是使用 Redux 的 API,因為大多數時間你都會在編寫功能。
這讓到 Redux 的雙向遷移都非常的容易。我們并不想限制你!
### 遷移 Flux 項目
[Reducer](#) 抓住了 Flux Store 的本質,所以這讓逐步遷移一個 Flux 項目到 Redux 上面來變成了可能,無論你使用了 [Flummox](http://github.com/acdlite/flummox)、[Alt](http://github.com/goatslacker/alt)、[traditional Flux](https://github.com/facebook/flux) 還是其他 Flux 庫。
同樣你也可以將 Redux 的項目通過相同的步驟遷移回上述的這些 Flux 框架。
你的遷移過程大致包含幾個步驟:
-
創建一個叫做 `createFluxStore(reducer)` 的函數,通過 reducer 函數適配你當前項目的 Flux Store。從代碼來看,這個函數很像 Redux 中 [`createStore`](#) 的實現。它的 dispatch 處理器應該根據不同的 action 來調用不同的 `reducer`,保存新的 state 并拋出更新事件。
-
通過創建 `createFluxStore(reducer)` 的方法來將每個 Flux Store 逐步重寫為 Reducer,這個過程中你的應用中其他部分代碼感知不到任何變化,仍可以和原來一樣使用 Flux Store 。
-
當重寫你的 Store 時,你會發現你應該避免一些明顯違反 Flux 模式的使用方法,例如在 Store 中請求 API、或者在 Store 中觸發 action。一旦基于 reducer 來構建你的 Flux 代碼,它會變得更易于理解。
-
當你所有的 Flux Store 全部基于 reducer 來實現時,你就可以利用 [`combineReducers(reducers)`](#) 將多個 reducer 合并到一起,然后在應用里使用這個唯一的 Redux Store。
-
現在,剩下的就只是[使用 react-redux](#) 或者類似的庫來處理你的UI部分。
-
最后,你可以使用一些 Redux 的特性,例如利用 middleware 來進一步簡化異步的代碼。
### 遷移 Backbone 項目
對不起,你需要重寫你的 Model 層。它們區別太大了!