目前看來 ASP.NET 中的 Razor (CSHTML) 語言是雞肋還是奇葩?
Razor模板引擎是我見過的最好的模板引擎了。前面有人回答『破壞了html的純潔性 』,我不同意。模板引擎的作用是用數據去渲染dom,那必然會有一些符號或標記去做數據的佔位符。比比看常見的模板引擎,jade,ejs,handlebars等等,沒有一個引擎的語法能像razor一樣簡單的。破壞html純潔性?如果你不用模板引擎處理數據綁定,那你就用其他的mvvm的框架把,vue或者angluarjs,reactjs等。或是用最原始最挫的辦法,jquery去在js裡面拼dom吧。
蠻好用的,除了偶爾在js代碼里混用,會導致編輯器分析js語法會有些小錯誤之外都很好。
主要我覺得代碼比較簡潔,這點是最好不過了。
以此論之,PHP和JSP哪一個不是混合編程的奇葩呢?
目前正在寫一個 MVC 項目,用了 Razor 做模版引擎,沒覺得 Razor 奇葩,但也不是那麼好用,不過也沒有更好的解決辦法,但目前看來至少比第三方的一些模版引擎來的快,而且對其支持也很強大,自己擴展的空間也很大。
你可以說它不符合當代的大前端體系,
但怎麼也談不上雞肋吧?
做下粗粒度的局部視圖,全局模板管理,還是很方便的.Razor最主要的問題是網頁生成都在後端,所以對於大多數應用來說,它遠沒有把用戶邏輯放在前端的那些設計好。主要問題是速度慢以及對伺服器有不必要的負載(每換一個視圖就要讓後端重新渲染整個頁面)。另外就是Razor本身做不了漂亮的頁面交互,那些東西還得用HTML5 / CSS / JS。
但這不是Razor的問題,而是因為http://ASP.Net出現的早,所以還沒趕上前端快速發展的時代。
然後對於那些必須把頁面渲染邏輯放在後端的應用來說,它還是很不錯的。至少在同類型的東西里它是最好的之一。先問是不是,再問為什麼。你用過嗎?
Razor是.net下的jsx,完全的基於ast的模板。理論上來說,其他後端模板弱爆了,能支持語言全部ast的模板那才是好模板。
如果你只是做一些快速開發crud操作的話足夠了,Razor還是需要jQuery的支持的。
但是頁面上如果有很多交互和流程的話,還是用angularjs或者vuejs吧。瀏覽器緩存和restful api才是主流。
所以說對於現代網站來說,還是雞肋了一些…
雞肋有點了,不過湊合湊合就好,真的!!
好像又回到了asp時代,在座各位有用過asp的嗎?不是http://asp.net哦
是雞肋還是奇葩,更多與個人使用習慣與意願相關。
首先我感覺http://asp.net mvc還算可以,比起webform來說很不錯了。
不過我覺得某些設計卻與mvc衝突。View是什麼,我覺得應該是數據介面或者說就是業務數據;不是代碼(竟然允許在html裡面寫代碼給視圖賦值),更不應該調用某個函數拼接一段html代碼。
另外某些設計比較繁瑣,比如沒有全局View的概念,頁面沒有默認綁定的View(需要手動new)。
對於在Controller中new View這種行為我覺得只有理論上的意義,表面上分離了實體與UI層代碼,實際上我做了多年web開發還真沒有碰到過一個html頁面模板(不是控制項模板)對於View是一對多的,一般都是反過來多對一。
我覺的Filter的存在就是因為頁面與View分離造成的,搞出來的一個補丁。否則使用View方法重載想幹什麼都可以,而Action僅僅就是一個方法,所以無能為力只好打補丁。
沒有客戶端視圖的概念,伺服器端視圖無法為客戶端提供有價值的信息,現在很多網站都強調用戶的交互性。
另外Razor這種視圖引擎破壞了html的純潔性,估計會給美工修改頁面造成一定的麻煩,當然視圖引擎在綁定數據的時候有IDE支持是它的優點。
路由規則就是個多餘的東西,比較繁瑣而且消耗資源,就為了追求所謂的REST風格。
當然我只是看過一兩小時的網路入門教程,如果有什麼說的不對的地方,歡迎大家拍磚。
如果你覺得http://asp.net mvc很雞肋,並且能夠接受51Nod這種風格可以嘗試一下 前後端一體 WEB 視圖框架 - C# 高性能自動化服務端框架 - 凹凸架構。如果想看看開發時的html/js源代碼請將擴展名.html改為.page.html或者.js改為.page.js,比如http://www.51nod.com/onlineJudge/judgeStatus.page.html與http://www.51nod.com/onlineJudge/judgeStatus.page.js。對於include採用的是相對於網站根目錄的絕對路徑,比如&映射到http://www.51nod.com/header.html與http://www.51nod.com/header.js。
大家都錯了,題主的意思是Razor 作為一門語言是雞肋還是奇葩,那麼問題來了,Razor 是屬於哪門語言呢?
目前和.net工作,作為純前端來說,.net懵逼中,CSHTML懵逼中。
簡單,好用
razor 很不錯了。node里也能用。
這需要參照物了, razor以簡潔的優勢替代傳統webform
razor的存在當時主要還是替代傳統webform的替代方案,輕量簡潔
為什麼我創建的cshtml頁面總顯示缺少webpage的引用呢?
Razor絕對的最強模版,沒有之一。其它模版的數據塊都是亂麻麻的,Razor雖然有個@在前,但是完成不影響整個Html結構,書寫簡單輕鬆,沒有抓狂的感覺,寫完成後看整個文檔也很清爽!
不明白為什麼標題里使用的都是貶義詞,如果題主的結論成立的話,那php和jsp的伺服器端標記&?&>和&<%%&>是什麼?
不是雞肋,也不是奇葩, 是相比aspx 視圖引擎更加輕量高效的視圖引擎,也是官方推薦的首選的視圖引擎
推薦閱讀:
※怎麼讓代碼的邏輯更清晰?
※極大極小演算法有些不明白 ?
※C#4 VS2015 把delegate的null check代碼標灰了,該怎麼辦?
※C#在開源框架的數量和質量上有希望追上JAVA么?
※如何系統掌握遊戲編程中3D圖形學相關的基礎?