ASP.NET MVC व्यू इंजन (सामुदायिक विकी)
चूंकि एक व्यापक सूची मौजूद नहीं है, इसलिए एसओ पर यहां एक शुरू करें। ASP.NET MVC समुदाय के लिए यह बहुत महत्वपूर्ण हो सकता है यदि लोग अपने अनुभव (किसी को भी, जो इनमें से किसी एक में योगदान करते हैं) जोड़ते हैं। कुछ भी लागू करने IViewEngine
(जैसे VirtualPathProviderViewEngine
) यहाँ उचित खेल है। बस नए व्यू इंजन (वेबफ़ॉर्मव्यूइन और रेजर को शीर्ष पर छोड़कर) को वर्णानुक्रम में लिखें, और तुलना करने के उद्देश्य से प्रयास करें।
System.Web.Mvc.WebFormViewEngine
डिज़ाइन लक्ष्य:
एक दृश्य इंजन जो वेब प्रपत्र पेज को प्रतिक्रिया के लिए रेंडर करने के लिए उपयोग किया जाता है।
पेशेवरों:
- सर्वव्यापी क्योंकि यह ASP.NET MVC के साथ जहाज करता है
- ASP.NET डेवलपर्स के लिए परिचित अनुभव
- IntelliSense
- किसी भी भाषा को कोडडॉम प्रदाता (जैसे C #, VB.NET, F #, Boo, Nemerle) के साथ चुन सकते हैं
- ऑन-डिमांड संकलन या पूर्वनिर्धारित विचार
विपक्ष:
- उपयोग "क्लासिक ASP.NET" पैटर्न के अस्तित्व से उलझन में है जो अब MVC में लागू नहीं होता है (जैसे ViewState PostBack)
- "टैग सूप" के विरोधी पैटर्न में योगदान कर सकते हैं
- कोड-ब्लॉक सिंटैक्स और मजबूत-टाइपिंग रास्ते में प्राप्त कर सकते हैं
- IntelliSense इनलाइन कोड ब्लॉक के लिए हमेशा उपयुक्त नहीं शैली को लागू करता है
- सरल टेम्पलेट्स डिजाइन करते समय शोर हो सकता है
उदाहरण:
<%@ Control Inherits="System.Web.Mvc.ViewPage<IEnumerable<Product>>" %>
<% if(model.Any()) { %>
<ul>
<% foreach(var p in model){%>
<li><%=p.Name%></li>
<%}%>
</ul>
<%}else{%>
<p>No products available</p>
<%}%>
System.Web.Razor
डिज़ाइन लक्ष्य:
पेशेवरों:
- कॉम्पैक्ट, एक्सप्रेसिव और फ्लुइड
- सीखने में आसान
- नई भाषा नहीं है
- महान अंतर्मुखी है
- इकाई परीक्षण योग्य
- सर्वव्यापी, ASP.NET MVC के साथ जहाज
विपक्ष:
- ऊपर संदर्भित "टैग सूप" से थोड़ी अलग समस्या पैदा करता है। जहां सर्वर टैग वास्तव में सर्वर और गैर-सर्वर कोड के आसपास संरचना प्रदान करते हैं, रेजर HTML और सर्वर कोड को भ्रमित करता है, जिससे शुद्ध एचटीएमएल या जेएस विकास चुनौतीपूर्ण होता है (कॉन उदाहरण # 1 देखें) जब आप एचटीएमएल और / या जावास्क्रिप्ट से बचते हैं। कुछ बहुत ही सामान्य परिस्थितियों में टैग।
- खराब इनकैप्सुलेशन + रीससबिलिटी: रेजर टेम्पलेट को कॉल करना अव्यावहारिक है जैसे कि यह एक सामान्य तरीका था - व्यवहार में रेजर कोड को कॉल कर सकता है लेकिन इसके विपरीत नहीं, जो कोड और प्रस्तुति के मिश्रण को प्रोत्साहित कर सकता है।
- सिंटैक्स बहुत HTML-उन्मुख है; गैर-html सामग्री उत्पन्न करना मुश्किल हो सकता है। इसके बावजूद, रेज़र का डेटा मॉडल अनिवार्य रूप से केवल स्ट्रिंग-संघनन है, इसलिए वाक्यविन्यास और नेस्टिंग त्रुटियों को न तो सांख्यिकीय रूप से और न ही गतिशील रूप से पता लगाया जाता है, हालांकि VS.NET डिज़ाइन-टाइम मदद इसे कुछ हद तक कम करती है। स्थिरता और शोधन क्षमता इसके कारण पीड़ित हो सकते हैं।
कोई दस्तावेज़ API , http://msdn.microsoft.com/en-us/library/system.web.razor.aspx
कॉन उदाहरण # 1 ("स्ट्रिंग [] ..." के स्थान पर ध्यान दें):
@{
<h3>Team Members</h3> string[] teamMembers = {"Matt", "Joanne", "Robert"};
foreach (var person in teamMembers)
{
<p>@person</p>
}
}
Bellevue
डिजाइन लक्ष्य:
- HTML को प्रथम श्रेणी की भाषा के रूप में सम्मान दें, इसे "सिर्फ पाठ" के रूप में मानने का विरोध किया।
- मेरे HTML के साथ गड़बड़ मत करो! डेटा बाइंडिंग कोड (बेलव्यू कोड) HTML से अलग होना चाहिए।
- सख्त मॉडल-व्यू पृथक्करण लागू करें
Brail
डिज़ाइन लक्ष्य:
Microsoft ASP.NET MVC फ्रेमवर्क के साथ काम करने के लिए मोनोल से ब्रेल व्यू इंजन को पोर्ट किया गया है। ब्रेल से परिचय के लिए, कैसल प्रोजेक्ट वेबसाइट पर प्रलेखन देखें ।
पेशेवरों:
- "कलाई के अनुकूल अजगर सिंटैक्स" के बाद मॉडलिंग की गई
- मांग पर संकलित विचार (लेकिन कोई पूर्वसर्ग उपलब्ध नहीं है)
विपक्ष:
उदाहरण:
<html>
<head>
<title>${title}</title>
</head>
<body>
<p>The following items are in the list:</p>
<ul><%for element in list: output "<li>${element}</li>"%></ul>
<p>I hope that you would like Brail</p>
</body>
</html>
Hasic
हैसिक अधिकांश अन्य दृश्य इंजनों की तरह स्ट्रिंग्स के बजाय VB.NET के XML शाब्दिक का उपयोग करता है।
पेशेवरों:
- मान्य XML का संकलन-समय की जाँच
- सिंटेक्स रंग
- पूर्ण अंतर्मुखी
- संकलित विचार
- नियमित सीएलआर कक्षाओं, कार्यों, आदि का उपयोग करते हुए विस्तार
- यह नियमित रूप से VB.NET कोड के बाद से सहज क्षमता और हेरफेर
- इकाई परीक्षण योग्य
विपक्ष:
- प्रदर्शन: क्लाइंट को भेजने से पहले पूरे डोम का निर्माण करता है।
उदाहरण:
Protected Overrides Function Body() As XElement
Return _
<body>
<h1>Hello, World</h1>
</body>
End Function
NDjango
डिज़ाइन लक्ष्य:
NDjango F # भाषा का उपयोग करते हुए .NET प्लेटफॉर्म पर Django टेम्प्लेट लैंग्वेज का कार्यान्वयन है
।
पेशेवरों:
NHaml
डिज़ाइन लक्ष्य:
Rails Haml व्यू इंजन का .NET पोर्ट। से Haml वेबसाइट :
Haml एक मार्कअप लैंग्वेज है, जो बिना इनलाइन कोड के उपयोग के, बिना किसी वेब डॉक्यूमेंट के XHTML का साफ़-साफ़ वर्णन करने के लिए उपयोग किया जाता है ... Haml स्पष्ट रूप से XHTML को टेम्पलेट में कोड करने की आवश्यकता से बचता है, क्योंकि यह वास्तव में XHTML का एक सार वर्णन है। गतिशील सामग्री उत्पन्न करने के लिए कुछ कोड के साथ।
पेशेवरों:
- ट्रिक संरचना (यानी DRY)
- अच्छी तरह से इंडेंट किया हुआ
- स्पष्ट संरचना
- सी # इन्टेलिसेंस (वी.एस.2008 विद रेशर)
विपक्ष:
- मार्कअप की पहचान का लाभ उठाने के बजाय एक्सएचटीएमएल से एक अमूर्तता
- VS2010 के लिए कोई इंटेलीजेंस नहीं
उदाहरण:
@type=IEnumerable<Product>
- if(model.Any())
%ul
- foreach (var p in model)
%li= p.Name
- else
%p No products available
NVelocityViewEngine (MvcContrib)
डिज़ाइन लक्ष्य:
NVelocity पर आधारित एक व्यू इंजन
जो कि लोकप्रिय Java प्रोजेक्ट वेलोसिटी का .NET पोर्ट है
।
पेशेवरों:
- पढ़ने / लिखने में आसान
- संक्षिप्त कोड देखें
विपक्ष:
- दृश्य पर उपलब्ध सहायक विधियों की सीमित संख्या
- स्वचालित रूप से Visual Studio एकीकरण (IntelliSense, संकलन-समय की जाँच, या रीफ़ैक्टरिंग) नहीं है
उदाहरण:
#foreach ($p in $viewdata.Model)
#beforeall
<ul>
#each
<li>$p.Name</li>
#afterall
</ul>
#nodata
<p>No products available</p>
#end
SharpTiles
डिज़ाइन लक्ष्य:
SharpTiles JSTL का एक आंशिक पोर्ट है, जिसे टाइल फ्रेमवर्क (माइल स्टोन 1 के रूप में) के
पीछे अवधारणा के साथ जोड़ा गया है ।
पेशेवरों:
- जावा डेवलपर्स के लिए परिचित
- XML- शैली कोड ब्लॉक
विपक्ष:
उदाहरण:
<c:if test="${not fn:empty(Page.Tiles)}">
<p class="note">
<fmt:message key="page.tilesSupport"/>
</p>
</c:if>
स्पार्क व्यू इंजन
डिज़ाइन लक्ष्य:
विचार html को प्रवाह और कोड को मूल रूप से फिट करने की अनुमति देता है।
पेशेवरों:
- अधिक पठनीय टेम्पलेट्स का उत्पादन करता है
- सी # इन्टेलिसेंस (वी.एस.2008 विद रेशर)
- VS2010 के लिए स्पार्कसिन प्लग-इन ( रीशर के साथ काम करता है)
- आपके विचारों में सभी कोड से छुटकारा पाने के लिए एक शक्तिशाली बाइंडिंग सुविधा प्रदान करता है और आपको आसानी से अपने स्वयं के HTML टैग का आविष्कार करने की अनुमति देता है
विपक्ष:
- शाब्दिक मार्कअप से टेम्पलेट लॉजिक का कोई स्पष्ट पृथक्करण नहीं (इसे नामस्थान उपसर्गों के द्वारा कम किया जा सकता है)
उदाहरण:
<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
<li each="var p in products">${p.Name}</li>
</ul>
<else>
<p>No products available</p>
</else>
<Form style="background-color:olive;">
<Label For="username" />
<TextBox For="username" />
<ValidationMessage For="username" Message="Please type a valid username." />
</Form>
StringTemplate देखें इंजन MVC
डिज़ाइन लक्ष्य:
- लाइटवेट। कोई पृष्ठ कक्षाएं नहीं बनाई गई हैं।
- तेज। टेम्पलेट रिस्पांस आउटपुट स्ट्रीम के लिए लिखे गए हैं।
- कैश्ड। टेम्प्लेट कैश्ड हैं, लेकिन फ़ाइल परिवर्तनों का पता लगाने के लिए FileSystemWatcher का उपयोग करें।
- गतिशील। कोड में मक्खी पर टेम्प्लेट उत्पन्न किए जा सकते हैं।
- लचीला। टेम्प्लेट्स को किसी भी स्तर पर नेस्ट किया जा सकता है।
- एमवीसी सिद्धांतों के अनुरूप। UI और बिजनेस लॉजिक को अलग करने को बढ़ावा देता है। सभी डेटा समय से पहले बनाया जाता है, और टेम्पलेट को पास कर दिया जाता है।
पेशेवरों:
- StringTemplate जावा डेवलपर्स के लिए परिचित
विपक्ष:
- सरलीकृत टेम्पलेट सिंटैक्स इच्छित आउटपुट (जैसे jQuery संघर्ष ) के साथ हस्तक्षेप कर सकता है
विंग बीट्स
विंग बीट्स एक्सएचटीएमएल बनाने के लिए एक आंतरिक डीएसएल है। यह F # पर आधारित है और इसमें ASP.NET MVC व्यू इंजन शामिल है, लेकिन इसका उपयोग XHTML बनाने की अपनी क्षमता के लिए भी किया जा सकता है।
पेशेवरों:
- मान्य XML का संकलन-समय की जाँच
- सिंटेक्स रंग
- पूर्ण अंतर्मुखी
- संकलित विचार
- नियमित सीएलआर कक्षाओं, कार्यों, आदि का उपयोग करते हुए विस्तार
- यह नियमित रूप से एफ # कोड के बाद से निर्बाध संरचना और हेरफेर
- इकाई परीक्षण योग्य
विपक्ष:
- आप वास्तव में HTML नहीं लिखते हैं, लेकिन एक DSL में HTML का प्रतिनिधित्व करने वाला कोड।
XsltViewEngine (MvcContrib)
डिज़ाइन लक्ष्य:
परिचित XSLT से विचार बनाता है
पेशेवरों:
- व्यापक रूप से सर्वव्यापी
- XML डेवलपर्स के लिए परिचित टेम्पलेट भाषा
- XML- आधारित
- समय परीक्षण किया
- सिंटैक्स और एलिमेंट नेस्टिंग की त्रुटियों का सांख्यिकीय रूप से पता लगाया जा सकता है।
विपक्ष:
- कार्यात्मक भाषा शैली प्रवाह नियंत्रण को कठिन बनाती है
- XSLT 2.0 (शायद?) समर्थित नहीं है। (XSLT 1.0 बहुत कम व्यावहारिक है)।