asp.net mvc 項目中怎麼用react redux,vue 等前端框架?

前端框架官方的例子 都使用npm webpack等,對於http://asp.net mvc的項目 該怎麼使用,前後台都是一個人寫的情況下 怎麼高效率調試


捨棄razor

把前後端分離部署,前端通過webpack構建出一坨靜態文件,放在伺服器的一個目錄下,後端用.net的話就走webapi,通過nginx tengine之類的反向代理映射到相同域名,所有以api、service之類關鍵詞開頭的請求,統一proxy pass到.net程序上,其他的請求直接發前端文件

(另外,有服務端渲染的需求的話中間加一個nodejs,其他的請求話基本都走fetch ajax)

提高開發調試效率的方法:

這裡面關鍵就是多了一個反向代理,平時開發的話,你同樣可以把後端請求映射到自己的.net程序上,前端請求映射到dev server上,這樣就可以使用webpack hot load等功能

我這邊用的react全家桶,後台類應用直接用的 ant-design/ant-design 加 dvajs/dva(對redux的封裝),dev工具用的是sorrycc/roadhog 反正都是阿里人搞的,穩定的很,當然如果你做線上站點,antd作用就沒那麼大了

多一句嘴:如果你不想做重前端,而只是想頁面某個部分使用react、vue,那麼就只需要用webpack構建這些組件,然後把它們掛靠在window對象上,async載入引入這些js後,通過http://window.xxx就能獲取這些組件了,再藉助react、vue等的global渲染方法render到對應的dom節點上就可以了,可以看我這個issue 諮詢一個dva架構上的問題 · Issue #554 · dvajs/dva


不 return View,改為 return Json,然後當WebAPI 用咯


試試 前後端一體 WEB 視圖框架 - C# 高性能自動化服務端框架 - 凹凸架構,在擁有前端框架靈活性的同時,自動解決 Web API 數據組織與搜索引擎友好問題。


Microsoft.AspNetCore.SpaService

用這個 nuget 包就好了


你可以不用razor模板的


解決這個問題主要從兩方面入手,一個是實現前後端分離,一個是在前端接入react/vue:

一、改變數據的獲取方式:將原來的使用後端模板引擎渲染數據到頁面的方式,改為後端提供介面,前端發起非同步請求獲取數據,在客戶端將數據組織為dom;

二、react/vue並不是只能走npm webpack,這些工具只是提供了更多的特性和便捷以及更強大的工程化管理;事實上兩者都有unpkg的方式,使用的時候直接script標籤src一下就好了,你完全可以在不藉助打包工具的情況下寫程序並且能正常工作,在對工具不熟悉的情況下,這樣掌握起來會比較容易。

提高效率:花點時間學習如何使用開發打包工具,讓前端開發工程化、自動化。

補充:react/vue並沒有局限於寫單頁面,合理的組織一樣可以多頁面。


給你個例子參考一下billshooting/CNCDataManager_Core後端是用ASP.NET Core寫的,前端是用Angular1 + Typescript寫的。道理是一樣的


根據前端的單頁應用特性,你的問題一分為二。首先,大部分人已經回答你了,就是不要用模版,只做為一個簡單的http server。其次,前端的單頁應用,不像模版解析後生成的網頁,已包含數據,它肯定需要訪問後端數據啊!你就可以用asp.net mvc功能,方便、快速地建立web api,為前端提供數據服務!


razor是伺服器端的,你可以不用,全靠angular,react等到了前端來處理。

不過我一般讓razor負責大部分不變的比如layout,一些純展示的頁面,angular負責動態那部分。


剛用MVC(WebAPI)做的項目,前台用的TS,React,Redux,Webpack,完全不影響嘛

WebAPI提供介面,數據統一起來

前端就單頁面,主要用React做路由處理(hashHistory)

配套的React前端組件用的AntD,速度提升很大。


這個跟你後台用什麼語言沒什麼關係,不過既然決定前端用React了,那就把垃圾一樣的.net頁面標籤扔掉吧


https://github.com/Restry/spa-webapi-angularjs

推薦一個項目這裡面是mvc和angularjs 的,文檔特別清晰。項目框架也很合理


其實http://asp.net mvc中如果你要使用angualrjs或reactjs這種spa模式的前端開發,最好的辦法是捨棄mvc本身的功能,而是用webAPI+angularjs或webAPI+reactjs的方式進行開發(也就是傳統上的前後端分離)。基本的方式是:

1.在http://asp.net裡面只保留一個默認頁面比如(login) 用來解決登錄和許可權驗證問題。

2.在客戶登錄成功後跳轉到另外一個頁面比如(home)頁面,而這個頁面的"view"(.chtml文件)直接載入angularjs的源碼和你自己的javascript代碼。

3.由於angularjs和reactjs都能很容易的實現「導航」功能,所以這個頁面本身就足以支撐「所有的前端頁面開發」的需求(也就是大多數情況下更本不需要有第三個.chtml文件)。

4.數據由伺服器端通過webapi實現介面(也就是繼承「apiController類的子類」),客戶端通過ajax請求來訪問獲取。這方面的技術現在也相當成熟了,angualrjs本身就有用於數據請求的對象 $http . reactjs也有相應的類庫支持.


下一個vs對npm的擴展就能在vs里用


推薦閱讀:

前端新人的迷茫?
React Native和React有啥區別?
單頁面應用,TAB選項卡太多,頁面邏輯是糅合在一起還是重新分路由?
為何需要Angularjs、backbonejs、reactjs?
如何評價數據流管理架構 Redux?

TAG:ASPNET | React | Vuejs | Redux | 前後端分離 |