ASP.NET MVC 最好的視圖引擎是什麼?
分別從性能和穩定的方面考慮一下:
Spark、NHaml、Razor等。
絕對的 Razor。。
目前是Razor。。。用上後愛不釋手
http://ASP.NET 5 (http://ASP.NET MVC 6)中的 Razor,沒有之一。。
全新的 Tag Helpers 語法:
&
&
&
&
&&
&
&
&
&
&&
&
分別從性能和穩定的方面考慮一下:
Spark、NHaml、Razor等。
http://ASP.NET 5 (http://ASP.NET MVC 6)中的 Razor,沒有之一。。
全新的 Tag Helpers 語法:
&
既保留了原來 HTML Helpers 的所有功能(有沒有還沒實現的我也不知道),又完全符合 HTML 語法。。要不是特性的前綴是 asp,別人看到可能就直接以為是 Angular 或者 Vue 這樣的前端框架了。。(雖然文件名還是 cshtml,不過好像 cs 其實已經木有了。。)
也正是如此,即便和 Angular、Vue 這些 MVVM 系的前端框架的模板混寫也不會有任何閱讀上的不適(反正大家都是合法的 HTML)。。
參考文獻:Tag Helpers目前官方的視圖引擎有兩款:Razor和WebForm,
WebForm的太腫了,而且Control模型在MVC框架已經沒用了,所以你可以理解為Razor是WebForm的減肥版,所以這兩者之間肯定Razor更好。
但是Razor呢,總體來說我覺得是倒退了,因為Razor回到了ASP、PHP的時代,將HTML和代碼雜湊在一起,當然Razor的語法是這種模型中最棒的,在代碼和HTML之間的切換非常的流暢和自然,例如:@foreach( var item in list )
{
&xxx&
}
這比起&<%...%&>或是&...?&>當然要簡單許多,並且由於MVC框架的緣故,像組織數據什麼的,是不需要在頁面上處理的。
廢話說完了來推薦私貨,Jumony是一個開源的HTML引擎(注意不是XML引擎,因為Jumony可以正確處理所有瀏覽器可以處理的HTML文檔,不論格式如何),通過HTML解析器將HTML文檔解析為DOM,可以抽取數據,或者將HTML作為模板或是http://ASP.NET MVC的視圖來使用。將HTML文件作為http://ASP.NET MVC的視圖便是Jumony ViewEngine,一個開源的視圖引擎。
與其他所有視圖引擎不同的是,Jumony的視圖是純粹的HTML,沒有任何的代碼。當然,Jumony允許你寫一些代碼來對頁面HTML DOM進行一些處理,但是絕大多數的任務都可以透過純粹的HTML模板來解決。
例如ActionLink:&Click here to sign in.&
&
&
&
&xxx&
&
&&
&xxx&
&
Razor要寫成:
&
最後,任何一個視圖引擎都有其適用的範疇,應靈活選擇各個視圖引擎來快速完成特定的工作。所有符合MVC規範的視圖引擎,都可以進行混合渲染,例如Jumony視圖引擎可以嵌一個Razor的部分視圖,反過來也可以。所以最好的視圖引擎就是根據特定的任務,靈活選擇最合適的。當然最好是符合MVC的規範,以便於混合渲染。
甚至於,可以自己寫一個視圖引擎,例如用markdown文件作為視圖的視圖引擎,,,,,Spark,在Castle項目的MonoRail中也使用到,其採取了稍微不同的做法。它既支持佔位符,也可以用特殊的屬性和標籤不受限制地把HTML和代碼混合在一起。它或許有些繁瑣,但卻擁有完全兼容 XML的優勢。
NHaml是Haml標記語言的.NET實現。這種語言根本不使用XML式的語法。藉助於一種速記語法,它免去了前一種風格(xml)中大量的語法噪音,比如結束標籤等。
最新的視圖引擎是微軟的 Razor。雖然所有的模板系統都具有一些共同特徵,但 Razor卻和我們前面討論的三種視圖引擎截然不同。不同於NHaml,Razor仍然使用XML標記;但又不同於Spark,Razor在使用XML代 碼方面沒有走得那麼極端。它也不完全類似於ASPX,因為它把那些比較笨重的佔位符替換成@符號接表達式或者普通的控制塊。因為不需要特殊的結束標記,所 以Razor最終的代碼很簡練。
默認情況下,從@表達式生成的所有文本都是HTML編 碼過的,@塊裡面的文本可以包含多個「HTML內容塊」。當識別出任意的XML標籤,Razor就會切換回HTML模式,與傳統ASP開發人員使用「%&> html代碼 &<%=」的技巧非常相似。如果你實際不希望XML標籤切換回HTML模式,你可以使用&
※微軟宣布 .NET 開源了,如何學好.NET?
※微軟開源 .NET 和其他相關項目會造成什麼影響?
※學了C#語言可以從事哪些工作?
TAG:NET | ASP | ASPNET | MVC | ASPNET開發 | ASPNETMVC | Razor |