هل يوفر بناء جملة Razor ميزة مقنعة في علامة واجهة المستخدم؟

StackOverflow https://stackoverflow.com/questions/4019740

سؤال

لاحظت أن سكوت غوثري بدأ أذكر الحلاقة أ قليلا على مدونته ، لكنني لست متأكدًا من أنه مناسب لأسلوبي.

منحت أنه أسلوب غير مألوف إلى حد ما بالنسبة لشخص معتاد على نوع "قياسي" من علامة ASP.NET (حاملي مكان المحتوى والرمز المضمّن) ، ولكنه يبدو وكأنه الكثير من الصفحات الإضافية لإدارة وأقل وضوحًا بالنسبة لي.

ما هي مشاعر الشعوب الأخرى على ذلك؟ هل هو شيء تعتقد أنه ينبغي النظر فيه بجدية عند سقالة صفحات MVC جديدة أم أنها تحاول فقط حل مشكلة غير موجودة؟

هل كانت مفيدة؟

المحلول

إخلاء المسئولية: أنا أحد مطوري Microsoft على MVC و Razor ، لذلك قد أكون متحيزًا بعض الشيء :)

لقد قمنا بتصميم Razor لتكون لغة مختصرة تستخدم فقط الحد الأدنى اللازم من أحرف التحكم. أود أن أقول أنه يمكن التعبير عن أجزاء كبيرة من وجهات نظرك مع عدد أقل من الأحرف من نفس الرمز باستخدام بناء جملة 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# العادي (راجع منشور المدونة الأخير التالي بواسطة Phil Haack مقارنة ASXP مع بناء الجملة Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx)
  2. ترميز HTML التلقائي للإخراج (مما يساعدك على حمايتك من هجمات حقن HTML)
  3. بنيت في (وإن لم يكن 100 ٪) التحقق من صحة العلامات التي تساعدك على تجنب العلامات غير المتوازنة

المفاهيم المتعلقة بالصفحة أيضا خريطة بسهولة مما لديك في ASPX

  • كما ترون لا يزال مسموحًا بالشفرة المضمنة
  • الأقسام (التي يمكن أن تكون اختيارية) تعادل العناصر النائبة للمحتوى
  • صفحات التخطيط بدلاً من الصفحات الرئيسية
  • مفاهيم الآراء الكاملة والجزئية هي نفسها
  • @functions { ... } كتل بدلا من <script runat="server"> ... </script>

بالإضافة إلى ذلك ، يحتوي Razor على عدد من المفاهيم المفيدة التي أقول أنها أفضل من ما هو متاح في ASPX:

  • @helper وظائف لإنشاء وظائف سهلة حقًا تنبعث منها العلامات
  • @model الكلمة الرئيسية لتحديد نوع طراز العرض الخاص بك دون الحاجة إلى كتابة أ <%@ Page ... التوجيه مع اسم الفصل الكامل

أود أن أظن أننا تعاملنا مع مشكلة حقيقية ، والتي تتمثل في السماح لك بكتابة وجهات نظر موجزة ومتوافقة مع المعايير بسهولة أكبر مع تزويدك في الوقت نفسه بطرق لإعادة تشكيل الكود المشترك.

بالطبع ، لن يفضل الجميع بناء الجملة وهذا هو السبب في أننا ندعم أيضًا محرك View ASPX تمامًا. بالإضافة إلى ذلك ، يمكنك الاطلاع على Spark و Naml ، وهما محركان من الطرف الثالث التي تتمتع بمجتمع كبير متابعين. تتمتع منشور المدونة التالي بمقارنة جيدة للعروض المختلفة: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

نصائح أخرى

أنا شخصياً أقدر حقًا انخفاض عدد شخصيات الهروب المستخدمة. استخدام <% %> يصبح شاقًا جدًا عند مقارنته @{} وليس تقريبا كما هو جذاب.

علاوة على ذلك ، يتم تبسيط كتابة تعريف كامل لـ CodeBehind و Page إلى واحد @model model.

كما لاحظ Marcind أيضًا ، عدم تضمينه دائمًا runat=server جميل جدا أيضا.

بشكل عام ، أقدر حقًا استخدام محرك Razor وأجد أنه لا يجعل الأمور أسهل على التطوير فحسب ، بل يجعل القراءة أسهل أيضًا.

يمكنك المحاولة هذا المحول. لمزيد من المعلومات تحقق منشور المدونة هذا.

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top