如何用React做一個MVC項目?

最近剛學React,打算用.net MVC+React+Swageer結合做一個項目,以前做的項目是用Razor。數據來源是雲服務的API,關鍵是從API獲取到的數據是在Controller處理還是在React處理?如果是React處理數據,後期不利於維護React;如果在Controller處理數據,會不會體現不出React的特點?

簡單來說是API-&>Controller處理數據(JsonResult)-&>React(get)渲染還是API-&>React處理數據並渲染(get)?

如果以上兩種方式都可以的話,一般項目是通用哪種?(最好能附上.net MVC和React結合的Demo)

React究竟是適合MVC?MVVM還是MVW?還是說它本身只是負責View?


謝邀。

React在MVC里就是V,至於M和C怎麼實現隨便,不過React自己也有管理狀態的功能,對小項目不用MVC框架也行。

我個人觀點,都用上React了,為啥不幹脆用Flux或者Redux這樣單向數據流的框架呢,和React社區也比較一致。


React就是view,如果要用到MVC模式中的話,應該是前後端分離的吧,那麼MC應該放在後端,把C當做api的網關,雲服務的數據流通過api經過網關再到前端,前端產生的數據也是先經過網關,然後在通過api到雲服務上,這樣可以減輕前後端的耦合,哪天心血來潮不想用react了,數據api也不用跟著改動。至於React這個怎麼跟網關對接,可以使用一些類似redux的模塊。


看你打算不打算前後端分離,現在都是前後端分離+RESTful,那麼數據處理應該在前端,react是View層,所以具體在前端哪裡處理,取決於你的前端架構,可以是模型層,也可以是業務組件,也可以是模型層+業務組件。MVC的話,Controller只處理協議相關內容,把數據變為統一格式以後,調用業務層。返回的數據處理成什麼格式同樣取決於協議。

此外,很多答主連前端MVC和後端MVC都沒分清楚,就回答,有點誇張啊。前端MVC框架這麼反人類的東西,現在還有人用嗎?


前後端分離,後端用 http://asp.net webapi,前面就用react+redux之類的。


  1. 代碼直接github搜.net+react
  2. React 只是view層,但是可以通過React社區配套的redux等拓展,React並不強制規定你如何選擇.
  3. 是否由React直接處理數據取決於項目大小,中大型項目或者以後立志於發展成一個中大型項目的建議上redux,如果只是想快速做一個玩具出來直接可以在React處理,因為引入redux這種東西成本還是挺大的(代碼啰嗦,但是條理清晰,越是大項目它的優勢越明顯).
  4. 目前react開發標配就是react+redux(mobx),redux負責關於數據大部分的東西,react專註view


mvc是一組對代碼的分層和組織方式。本質還是在oo的基礎上,通過事件對頁面進行更新。和react不是一個體系。


首先,React本身只是個view層,不建議直接在react裡面處理數據,其次也不清楚你要做的項目大小和交互複雜程度,如果是小型項目,也沒有太多交互,其實也可以只用React,如果想用MVC的方式,我推薦一個基於React的react-imvc框架,傳送門:Lucifier129/react-imvc

react-imvc設計為面向中小型項目的,使用react-imvc開發的項目主要是由view.js、model.js和controller.js組成,這個框架是希望把生命周期、Ajax/Fetch這些帶有副作用的函數從容器型組件裡面剝離出來,全部放到controller裡面處理,讓組件變得更純粹,controller裡面有自己的生命周期,包括但不限制於componentWillCreate、componentDidMount、和pageWillLeave等等。

react-imvc的view部分依然用的是react,你還是可以在組件裡面使用生命周期,如果不考慮服務端渲染,還可以直接上react-lite,model使用了自己實現的輕量版redux,就是把原來redux的reducer和action合併了,以原來的action.type作為reducer的函數名,這樣可以減少原本很多reducer和action文件,controller則是自動綁定了view和model,所有事件處理函數以handlexxx的形式命名,這些函數和state可以在view裡面直接拿到,按照你上面的說法就是在controller裡面請求介面數據,拿到介面數據並進行各種format後存到store裡面,在view裡面拿到store的數據並進行渲染,這裡有一個demo:Lucifier129/todo-imvc


react本身就是負責view,你可以認為他就是把你返回的json顯示到頁面上而已

具體數據在伺服器怎麼取的,那都是api封裝好的,你後台用mvc模式和react沒啥關係

react不負責把數據接受還在瀏覽器裡面再處理一遍數據,除非是做一些離線的本地應用,那隻能靠javascript在瀏覽器本地運算,那就必須自己來處理數據

react是mvvm,他把controller變成了viewmodel,一邊他可以和model通信,一邊他還和view雙向綁定,但是model和view是不通信的


推薦閱讀:

在 componentWillUnmount 中到底應該清除哪些變數?
store的組織是扁平化好,還是分層級樹狀的好?大型的項目store該怎麼組織?
新手學習前端開發加了很多技術群有必要天天看群聊天記錄學習嗎?
截止到2017年7月,手淘內部還在用vue嗎,有替換成react嗎?

TAG:JavaScript | ASPNET | MVC | C# | React |