回答
視圖引擎負責從創建HTML您觀點。視圖通常是某種HTML和編程語言的混合。其中大部分背後的格局被稱爲two-step view。
例如,ASP.NET自帶的視圖引擎開箱即用。這是視圖有很多標籤,如<% %>
和<%: %>
。它使用.aspx
文件擴展名。
使用ASP.NET MVC3,添加了另一個開箱即用的視圖引擎Razor,它具有更吸引人的語法,例如, <div>@Model.UserName</div>
。
視圖引擎的選擇很重要,因爲視圖引擎的功能集完全不同。例如,一些支持渲染爲PDF文件;有些不能在web上下文之外使用(對於舊的ASP.NET視圖引擎也是如此),而另一些則可以(例如Razor)。當您想要以建立視圖的相同方式創建HTML電子郵件時,「離線」呈現視圖派上用場,這些電子郵件應該從後臺工作人員而不是Web應用程序發送。
在SO上有一個很好的比較asp.net view engines。
好消息是,你可以在ASP.NET MVC中使用多個視圖引擎並行,但除非必要,我不會推薦它。
Razor引擎中有一些非常漂亮的擴展點。例如,您可以提供一個自定義視圖基類,這是一個強大的概念,可以輕鬆地在正確的位置添加大量功能,而無需混淆您必須處理的所有細節。
我現在會去剃刀。
視圖引擎是MVC用來從控制器查找和呈現視圖的視圖引擎。如果你對默認路由感到滿意,你可能不需要改變任何東西,但可以說你想讓你的共享文件通常位於root/views/shared中,而不是位於root/common中,那麼定製的viewengine就是你會需要創建才能做到這一點。
在這裏,您可以看到如何構建一個視圖引擎:
http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/
視圖引擎還負責渲染視圖,但因爲你剛開始學習MVC,你可能不會需要改變渲染功能只是
視圖引擎是什麼負責渲染您的視圖,並將您的代碼轉換爲光榮的HTML。因此,他們直接負責如何在視圖中編寫代碼。
基本上有兩個你需要關心的:ASPX和Razor。在我看來,Razor更加時尚和易於使用,只需在MVC3中支持即可。
例如,在ASPX代碼塊可能是這樣的:
<% foreach(var item in Model) { %>
<tr>
<td><%: item.Name %></td>
</tr>
<% } %>
儘管剃刀相當於看起來就像這樣:
@foreach(var item in Model) {
<tr>
<td>@item.Name</td>
</tr>
}
在MVC中,視圖引擎,你的瀏覽器和瀏覽器之間的工作方式是編譯你查看裏面的代碼,以提供有效的HTML輸出到瀏覽器中的一個。有許多可用的視圖引擎,其中一些是以下幾點:
ASPX
剃刀
星火
NHaml
NDJango
Hasic
抄網
貝爾維尤
夏普瓷磚
字符串模板
永擊敗
SharpDOM
目前大多數開發人員喜歡使用Razor視圖引擎,因爲它提供的編程非常方便的方式。所有這些視圖引擎可能不支持ASP.NET MVC。
欲瞭解更多詳情,您可以訪問this article。
視圖引擎適用於渲染HTML網頁瀏覽器或給用戶的應用程序中。它可以包含HTML標籤,服務器控件和一些編程語言。
Razor是MVC4框架的首選視圖引擎。
在ASP.Net MVC中,視圖引擎,你的觀點和瀏覽器之間的工作原理是通過考慮您的view.There提供輸出,以提供有效的HTML輸出到瀏覽器有很多類型的視圖引擎之一。
1)ASPX
2)剃刀
3)火花
4)NHaml
5)NDJango
6)Hasic
7)抄網
中閱讀了描述性文章查看引擎使您可以將HTML從您的視圖呈現給瀏覽器。
有通過ASP.NET MVC支持多視圖引擎,但使用最廣泛的視圖引擎是
- Web表單/ ASPX視圖引擎。
- 剃刀視圖引擎。
Web表單視圖引擎/ ASPX視圖引擎:
- Web窗體視圖引擎/ ASPX視圖引擎默認視圖引擎 爲Asp.net MVC項目。它可以從MVC 1.0
- 用於Web窗體引擎命名空間是Web.Mvc.WebFormViewEngine 這個視圖引擎
- 文件擴展名類似於Web窗體爲:
的.aspx,用於查看就像Web Form頁面。 .ascx,部分視圖&編輯器模板就像用戶控件。 .master,對於佈局和母版頁,就像Web窗體中的母版頁一樣。
- 不支持TDD(測試驅動開發)。
- Web窗體引擎不能防止XSS攻擊手段,任何腳本在數據庫中保存的 將被解僱,而渲染頁面
- 語法:<%:Html.ActionLink(「家」,「指數」)%>
Razor視圖引擎:
- 的Razor視圖引擎是一種先進的視圖引擎,可提供MVC 3.0及更高版本
- ASPX視圖的名稱空間引擎是Web.Razor。
- 該視圖引擎的文件擴展名爲.cshtml(Razor C#),用於視圖, 部分視圖,編輯器模板和佈局頁面。 .vbhtml(Razor VB.NET),用於視圖,部分視圖,編輯器模板和佈局頁面。
- 支持TDD(測試驅動開發)。相比於Web表單引擎
- 剃刀引擎是有點慢。
- 剃刀引擎防止跨站腳本攻擊(跨站點腳本攻擊)指 它渲染,以查看前編碼腳本或html標籤等<,>。
剃刀語法是很容易理解和乾淨得多比Web窗體 語法。剃鬚刀使用@符號讓這樣的代碼爲:
@ Html.ActionLink(「家」,「指數」)
視圖引擎呈現視圖到HTML表單的瀏覽器。如果我們談論的.Net框架的MVC應用程序,它支持以下2個視圖引擎:
1 Razor視圖引擎 2. Web窗體/ ASPX視圖引擎
差異: Razor視圖引擎使用佈局,但鑑於ASPX引擎使用的母版頁。
2. Razor View Engine使用部分頁面,但ASPX視圖引擎使用Web用戶控件。
3. Razor視圖引擎不是語言,它是標記語法。
4. @'符號在Razor Engine中用於編寫代碼。 @ Html.ActionLink(「Login」,「LoginView」) '<%:'分隔符用作起點,'%>'用作終點。您可以在ASPX引擎中編寫它們之間的代碼。
5. Razor View Engine對視圖,佈局和部分視圖具有.cshtml(使用C#)和.vbhtml(使用VB)擴展。 ASPX View Engine具有與簡單Web應用程序類似的擴展,如用於視圖的.aspx,用於UserControl的.acsx和用於母版頁的.master。
到目前爲止,每個響應有關ASP.NET。如果你正在尋找的NodeJS,視圖引擎,然後下面的一些是選項:
Jade (Pug)
express-handlebars
ejs
React
還有,我發現在https://github.com/expressjs/express/wiki#template-engines但上面的人似乎是我聽到有關的那些他們的整個列表最。
- 1. Arduino F():它實際上做了什麼
- 2. DBSlayer - 它實際上做了什麼?
- 3. Expression.Bind() - 它實際上做了什麼?
- 4. 視圖實際上應該做什麼?
- 5. go-pear.php有什麼用?它實際上做了什麼?
- 6. Symfony緩存是什麼:clear實際上做了什麼?
- 7. gwt PlaceTokenizer實際上做了什麼?
- 8. numpy.cov實際上做了什麼
- 9. ADMManifest.checkManifestAuthoredProperly()實際上做了什麼?
- 10. LD_INCLUDE_PATH實際上做了什麼嗎?
- 11. android:stretchMode實際上做了什麼?
- 12. CascadeType.REFRESH實際上做了什麼?
- 13. session_register_shutdown實際上做了什麼?
- 14. CloudQueue.EndAddMessage(IAsyncResult)實際上做了什麼?
- 15. Int [] Reverse - 這實際上做了什麼?
- 16. e.preventDefault()方法實際上做了什麼?
- 17. Python的__file__實際上做了什麼?
- 18. std :: ofstream :: close()實際上做了什麼?
- 19. XCode'Clean'實際上做了什麼?
- 20. 實際上做了什麼glutswapbuffers?
- 21. Sinatra :: Base.condition實際上做了什麼?
- 22. NSLog實際上做了什麼?
- 23. SetPriorityClass(REALTIME_PRIORITY_CLASS)實際上做了什麼?
- 24. TwoPassFilter GPUImage實際上做了什麼?
- 25. terraform刷新實際上做了什麼?
- 26. SpringClassRule/SpringMethodRule實際上做了什麼?
- 27. IMetadataExchange端點實際上做了什麼?
- 28. Android SQLite - SQLiteDatabase.replace()實際上做了什麼?
- 29. MvcBuildViews實際上做了什麼嗎?
- 30. pdb文件實際上做了什麼?
你能告訴我(給我一個鏈接)我如何呈現ViewEngines離線? – gillyb
@gillyb:你最好的選擇是http://razorengine.codeplex.com/,它可以在ASP環境之外呈現Razor視圖。 – mnemosyn