متصفح يونيكود
تطبيق ويب Blazor C# لتصفح قاعدة بيانات أحرف Unicode.
يتم استضافة التطبيق هناك: https://unicode-browser.azurewebsites.net/home
سمات
- قم بتحليل النص في نقاط كود Unicode.
- عرض معلومات مفصلة عن نقطة التعليمات البرمجية.
- تصفح نقاط التعليمات البرمجية في كتلة Unicode معينة.
- البحث عن أي حرف بالاسم.
- عرض معلومات إضافية (بتنسيق Markdown) على الصفحات المخصصة لكتل Unicode.
جربه
فيما يلي بعض عناوين URL التي يمكنك تجربتها لرؤية التطبيق أثناء العمل:
- https://unicode-browser.azurewebsites.net/blocks/Miscellaneous%20Symbols%20and%20Pictographs
- https://unicode-browser.azurewebsites.net/codepoints/1F365
- https://unicode-browser.azurewebsites.net/search?q=Tree
- https://unicode-browser.azurewebsites.net/decomposition?text=????????
- https://unicode-browser.azurewebsites.net/blocks/Tangut
- https://unicode-browser.azurewebsites.net/blocks/Tags
التقنيات الرئيسية المستخدمة
- ASP.NET Core 3.0 (.NET Core 3.0.0-preview8.19405.7)
- بليزر
- ماركديج 0.17.1
- بوتستراب 4.1
- الخط الرائع 5.0.10
- jQuery 3.3.1 (يبدو أن Beacuse Bootstrap JS لا يزال يتطلب ذلك)
روابط التوثيق
تتوفر وثائق Blazor على docs.microsoft.com.
قصة درامية
تمت كتابة معظم هذا التطبيق في أوائل عام 2016، باستخدام إصدار معاينة من ASP.NET Core وTypeScript وAurelia. في ذلك الوقت، كانت هذه مناسبة للتعرف على تلك الأطر الجديدة جدًا، وقد نجحت بشكل رائع.
الكود المصدري للإصدار الحالي هو في الغالب تعديل مباشر للنموذج الأولي المبكر. في الواقع، تم نقل معظم كود الخادم ببساطة إلى ASP.NET Core 2.1 مع تعديلات قليلة جدًا.
ومع ذلك، كان جزء العميل هو المكان الذي توجد فيه "المتعة"، حيث أن أجزاء HTML فقط هي التي يمكن إعادة استخدامها. (وما زال يتطلب الترحيل إلى Bootstrap 4 / Fontawesome 5) وكانت هذه مرة أخرى مناسبة رائعة لاختبار وتعلم كيفية استخدام Blazor، بالإضافة إلى مواكبة التقنيات الأخرى.
مسكتك
Blazor هي تقنية جديدة جدًا، ولا تزال في مرحلة المعاينة الأولية، وقد يكون من الصعب التعامل معها في بعض الأحيان.
ولهذا السبب، وجدت نفسي أتعثر في أشياء اعتقدت أنها ستكون تافهة، وأشعر أنه كان علي كتابة الكثير من التعليمات البرمجية النموذجية لتشغيل هذه الأشياء.
على سبيل المثال
* شعرت بخيبة أمل كبيرة لأنني لم أتمكن من مشاركة فئات النموذج الخاصة بي بين الخادم والعميل، حيث يستخدم Blazor حاليًا SimpleJson، وهو محدود للغاية. ؟ (وللأسف، يبدو أن Newtonsoft.Json لا يعمل بشكل جيد بما فيه الكفاية في الوقت الحالي.؟)
- يجب أن يتم ربط معلمات سلسلة الاستعلام يدويًا
- تحتاج الصفحات في بعض الأحيان إلى الاستماع يدويًا لتغييرات الموقع (على سبيل المثال، لتغييرات عنوان URL في نفس الصفحة)
- لا توجد إدارة للدولة خارج الصندوق. (على سبيل المثال، ماذا يحدث عند الرجوع إلى الخلف والأمام في السجل) => لقد قمت بحل هذه المشكلة من خلال عدم طلب إدارة الحالة على الإطلاق، والاعتماد دائمًا على المسار أو سلسلة الاستعلام لذلك.
- لا يبدو أن دورة حياة المكون قابلة للتوسيع بشكل كبير: سيكون من الصعب إضافة سلوك معقد في فئة أساسية (على سبيل المثال، عرض الدوار قبل تحميل المحتوى)
لقد تحسنت الأمور في الإصدار 3.0 (تم الآن فك تشفير معلمات المسار؟) ولكن أعتقد أن معظم النقاط لا تزال صحيحة.
بعض المستجدات في .NET Core 3.0:
- System.Text.Json هو برنامج تسلسل JSON الجديد (الافتراضي) لـ Blazor. ومع ذلك، فهو خشن جدًا عند الحواف. يعد عدم توفر إلغاء تسلسل الأنواع غير القابلة للتغيير خارج الصندوق بمثابة ألم حقيقي. ؟ => لقد قمت بتطبيق JsonConverter لإدارة هذه الحالة المحددة. من خلال الاعتماد على إنشاء التعليمات البرمجية الديناميكية، يمكن إنشاء نوع تقبله واجهة برمجة التطبيقات الجديدة لإلغاء التسلسل، ثم إنشاء النوع غير القابل للتغيير.
- في Preview 8، لا يزال يتعين على مشاريع عميل Blazor استهداف .NET Standard 2.0 وليس .NET Standard 2.1.