最近接觸了一個c#的項目,基本上是MVC結構,是基於asp.net的web項目。 view層是多個cshtml檔案構成(基本上可以認為是以前的aspx檔案),controller層由多個cs檔案(c#程式碼)組成,資料層這裡暫不討論。
這個專案是這樣的,我大概看了一下,view層的cshtml檔案裡面例如某個按鈕會連結到js檔案中的某個函數,然後這個函數會提交post請求或是get請求,然後就會連結到controller層的cs檔中的那個對應的函式了,之後就是資料處理後再回傳。
現在有以下幾個困惑:
1,我不知道上面講的這個流程是不是現在web開發中主流的一個前後端互動過程?
2,基於java web的jsp技術是不是也是類似上面.net這麼一個流程? jsp檔案是不是就是對應.net中的cshtml檔案?不過網路上說,jsp檔案會包含java程式碼,但我在cshtml檔案中完全沒找到c#的程式碼,要嘛就是html,要嘛就是js
3,如果jsp檔案中會夾雜著大量的java程式碼,那這個view層和controller層豈不是黏在一塊了?難道不應該是jsp檔呼叫js,然後js呼叫伺服器端controller層中的java檔這樣一個流程嗎?
4,如果說3問題中的確是jsp檔包含大量java程式碼,那的確是沒有很好的解耦,那我剛剛說的那個.net的項目,這樣的一個流程是不是意味著前後端解耦的還不錯?
5,我有點納悶的是,為什麼那個.net專案中,我一個html文件都找不到,全都是cshtml文件,然後還有大量的js文件,和cs文件(c#代碼)。
謝謝各位了,我其實是個剛進入web開發這個大海裡的一個菜鳥
phpcn_u15822017-05-17 10:02:59
謝邀,以下是個人愚見,要噴請輕噴:
算是。不過現在還有前後端分離
是;不是,cshtml
应该对应是java中的velocity
如果夾雜著,就會。可以使jsp對應一個servlet
是的,已經算不錯了
這是一種模板,簡單來說會讓html的開發對我們的後端人員更友善
PHPz2017-05-17 10:02:59
是這樣的,因為有經驗我做個回答:
1,你所說的連結到某個js檔案包括css檔案是因為在c#中定義了辨識路徑,不然是無法辨識的。
2,cshtml為Razor語法,要求檔案名稱後綴為這個。
3,我並沒碰到過混雜著java的.net專案。不過還是建議既然.net就用純c#建構吧,也方便維護。
4,你現在所有的疑惑都源自於你對後台不太了解,作為前端有時間可以學習一下Node的express框架或者koa都可以,用一下模板語法,你就會理解你現在的疑惑了。
phpcn_u15822017-05-17 10:02:59
是一個經典的前後端互動架構,但目前主流已經向 spa 方向遷移,前端負責處理更多的路由和邏輯,後端只負責提供 api 和 資料;
jsp 與cshtml 在這個意義上可以說是一致,但細節不同;至於為什麼cshtml 裡面沒有c#,是因為微軟規定View 層使用razor 引擎,後綴是cshtml, 裡面除了標準html 和js ,還可以使用razor語法(注意不是C# ), 但依照目前的趨勢,越來越多人不使用後端產生頁面,而是直接在前端處理,所以很多cshtml 裡面沒有razor 語句;
jsp 夾雜 java 是類比與 asp ,屬於淘汰技術, 題主已經接受了 mvc 的理念, 提出的疑問是對的,所以現在沒人這麼乾了;
是的;
因為是微軟規定的,具體原因看2;html 檔案也是可以存在的,但用 cshtml 可以預設與 controller 綁定,更方便;
習慣沉默2017-05-17 10:02:59
這個問題是前後端的分離。現在主流的都是MVC三層分離。
至於你說的JSP其實是java早起的在html裡面嵌入java程式碼的一種表現形式。現在已經慢慢弱化這種使用方法。