रेजर सिंटैक्स यूआई मार्कअप में एक आकर्षक लाभ प्रदान करता है?


88

मुझे लगता है कि स्कॉट गुथ्री ने रेज़र को अपने ब्लॉग पर एक उचित सा उल्लेख करना शुरू कर दिया है, लेकिन मुझे यकीन नहीं है कि यह मेरी शैली के लिए एक अच्छा फिट है।

दी यह एक बहुत ही अपरिचित शैली है किसी के लिए जो एएसपी.नेट मार्कअप (सामग्री स्थान धारकों और इनलाइन कोड) के "मानक" प्रकार का उपयोग करता है, लेकिन यह सिर्फ मुझे प्रबंधित करने के लिए अतिरिक्त पृष्ठों की तरह लगता है और मेरे लिए कम स्पष्ट मार्कअप है।

इस पर अन्य लोगों की भावनाएँ क्या हैं? क्या यह ऐसा कुछ है जिसे आप मानते हैं कि नए MVC पृष्ठों को मचान करते समय गंभीरता से विचार किया जाना चाहिए या क्या यह केवल एक समस्या को हल करने की कोशिश कर रहा है जो मौजूद नहीं है?


3
मैंने वास्तव में सोचा था कि वाक्य विन्यास किसी ऐसे व्यक्ति के लिए आसान है जो नियमित दृश्य इंजन से परिचित है। आप बस <% के बजाय @ का उपयोग करते हैं और अपने कोड नगेट्स को बंद नहीं करते हैं ...
जैको प्रीटोरियस

आप इस कनवर्टर की कोशिश कर सकते हैं । अधिक जानकारी के लिए इस ब्लॉग पोस्ट की जाँच करें
जॉर्ज के

जवाबों:


153

[अस्वीकरण: मैं MVC और रेजर पर Microsoft डेवलपर्स में से एक हूं, इसलिए मैं थोड़ा पक्षपाती हो सकता हूं :)]

हमने रेज़र को एक संक्षिप्त टेम्प्लेटिंग भाषा के रूप में डिज़ाइन किया है जो केवल न्यूनतम आवश्यक मात्रा में नियंत्रण वर्णों का उपयोग करता है। मैं कहूंगा कि "पारंपरिक" WebForms सिंटैक्स का उपयोग करके आपके विचारों के बड़े हिस्से को उसी कोड से कम वर्णों के साथ व्यक्त किया जा सकता है।

उदाहरण के लिए ASPX सिंटैक्स में निम्न कोड स्निपेट:

<% if(someCondition) { %>
  <ol>
  <% foreach(var item in Model) { %>
     <li><%: item.ToString() %></li>
  <% } %>
  </ol>
<% } %>

रेजर में निम्नानुसार व्यक्त किया जा सकता है:

@if(someCondition) {
   <ol>
   @foreach(var item in Model) {
      <li>@item.ToString()</li>
   }
   </ol>
}

जबकि ASPX संस्करण में 21 संक्रमण वर्ण ( <%और %>) हैं, रेजर संस्करण में केवल तीन ( @) हैं

मैं कहूंगा कि रेजर के फायदे इस प्रकार हैं:

  1. कंसीज़ सिंटैक्स, जो आपके द्वारा नियमित C # कोड लिखने के तरीके के समान है (फिल हालैक द्वारा निम्नलिखित हालिया ब्लॉग पोस्ट की जाँच करें रेजर सिंटैक्स के साथ Asxp की तुलना करें: http://haacked.com/archive/2011/01/06/razor- सिंटैक्स-क्विक-रेफरेंस.स्पेक्स )
  2. आउटपुट का स्वचालित HTML एन्कोडिंग (जो आपको HTML इंजेक्शन के हमलों से बचाने में मदद करता है)
  3. आपके मार्कअप का सत्यापन (हालांकि 100% नहीं) बनाया गया है जो आपको असंतुलित टैग से बचने में मदद करता है

पृष्ठ से संबंधित अवधारणाएँ ASPX में आपके पास मौजूद मानचित्र से आसानी से मिलती हैं

  • जैसा कि आप देख सकते हैं इनलाइन कोड अभी भी अनुमत है
  • अनुभाग (जो वैकल्पिक हो सकते हैं) सामग्री प्लेसहोल्डर के बराबर हैं
  • मास्टर पृष्ठों के बजाय लेआउट पृष्ठ
  • पूर्ण और आंशिक विचारों की अवधारणाएं समान हैं
  • @functions { ... } के बजाय ब्लॉक <script runat="server"> ... </script>

इसके अलावा रेजर में कई उपयोगी अवधारणाएं हैं जो मैं कहूंगा कि एएसपीएक्स में जो उपलब्ध है उससे बेहतर है:

  • @helper मार्कअप का कार्य करने वाले कार्यों का वास्तव में आसान निर्माण के लिए कार्य
  • @model<%@ Page ...पूर्ण वर्ग नाम के साथ एक निर्देश लिखने के लिए बिना अपने दृश्य के मॉडल प्रकार को निर्दिष्ट करने के लिए कीवर्ड

मैं यह सोचना चाहता हूं कि हमने एक वास्तविक समस्या से निबटा है, जो आपको अधिक आसानी से संक्षिप्त और मानकों के अनुरूप विचार लिखने की अनुमति देता है, जबकि एक ही समय में आपको आम कोड को रिफलेक्टर करने के तरीके प्रदान करता है।

बेशक, हर कोई सिंटैक्स पसंद नहीं करेगा, यही वजह है कि हम ASPX व्यू इंजन का भी पूरा समर्थन कर रहे हैं। इसके अलावा आप स्पार्क और एनएचएएमएल की जांच कर सकते हैं, जो दो 3-पार्टी व्यू इंजन हैं जो महत्वपूर्ण समुदाय का आनंद लेते हैं। निम्नलिखित ब्लॉग पोस्ट में विभिन्न प्रसादों की अच्छी तुलना है: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx


7
वास्तव में स्पष्ट और गहन उत्तर के लिए धन्यवाद। यह रेजर को एक सभ्य शॉट देने के लिए मेरी राय को काफी बदल देता है।
फिल.हेलर

2
हारून, आप रेजर और एस्पक्स को एक साथ मिला सकते हैं और मैच कर सकते हैं ताकि यदि आप चाहते थे कि आप एक बार में अपने प्रोजेक्ट को एक पेज में बदल सकें (केवल नकारात्मक पक्ष यह है कि आपको रेजर प्रारूप में अपने मास्टर पेजों की नकल करनी होगी क्योंकि रेजर व्यू का उपयोग करना एक है aspx मास्टर पृष्ठ समर्थित नहीं है)
marcind

1
आप अपने HTML में एक @ चिह्न कैसे डालते हैं? जैसे <a href="mailto:john@aol.com">?
क्रिस एस

9
@ क्रिस इससे बचे:@@
ब्रूनोएलएम

6
इस पोस्ट के अपडेट के रूप में, मैं पिछले तीन या चार महीनों से रेजर का उपयोग कर रहा हूं और, अब इसके आदी हो गए हैं, मुझे नहीं लगता कि मैं आराम से पारंपरिक ASP.Net मार्कअप में वापस जा सकता हूं।
फिल.हेलर

3

व्यक्तिगत रूप से मैं वास्तव में कमी की सराहना करता हूं कि कितने एस्केप पात्रों का उपयोग किया जाता है। का उपयोग करना <% %>बहुत कठिन हो जाता है जब की तुलना में @{}और लगभग के रूप में वाक्य रचना अपील नहीं है।

इसके अलावा, कोडबाइंड और पेज के लिए पूरी परिभाषा लिखना एक एकल के लिए सरल है @model model

जैसा कि marcind ने भी कहा है, हमेशा शामिल नहीं runat=serverहोना बहुत अच्छा भी है।

कुल मिलाकर, मैं वास्तव में रेजर इंजन का उपयोग करने की सराहना करता हूं और यह पाता हूं कि यह न केवल मुझे विकसित करने के लिए चीजों को आसान बनाता है बल्कि कोड को पढ़ने में भी आसान बनाता है।

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.