قائمة القوالب
يوجد 8 قوالب Handlebars تحت codegen/templates/، ولم تُسجَّل فيها أي مساعدات مخصصة (لا تستخدم سوى {{#each}} المدمجة والأقواس الثلاثية {{{ }}}).
القالب ← المنتج ← حقول البيانات
Section titled “القالب ← المنتج ← حقول البيانات”| القالب | المنتج المعروض | حقول البيانات |
|---|---|---|
android/LhTokens.kt.hbs |
LhTokens.kt و LhDarkTokens.kt (مشتركة بين الوضعين) |
{ version, source, package, imports[], body } |
ios/LhTokens.swift.hbs |
LhTokens.swift وLhDarkTokens.swift |
{ version, source, body } |
ios/LhShadow.swift.hbs |
LhShadow.swift (قالب ثابت، بلا فتحة body) |
{ version, source } |
harmony/LhTokens.ets.hbs |
LhTokens.ets وLhDarkTokens.ets |
{ version, source, body } |
harmony/LhShadow.ets.hbs |
LhShadow.ets (قالب ثابت) |
{ version, source } |
windows/LhTokens.cs.hbs |
LhTokens.cs وLhDarkTokens.cs |
{ version, source, namespace, body } |
windows/LhShadow.cs.hbs |
LhShadow.cs (قالب ثابت) |
{ version, source, namespace } |
windows/LhEasing.cs.hbs |
LhEasing.cs (قالب ثابت) |
{ version, source, namespace } |
اللافتة العلوية الموحَّدة
Section titled “اللافتة العلوية الموحَّدة”تحمل جميع القوالب في أعلاها كتلة التعليقات نفسها:
// =====================================================================================// هذا الملف مُولَّد تلقائيًا بواسطة @lh-ui/core (codegen في وقت البناء)، يُمنع التعديل يدويًا.// المصدر: {{{source}}} @ v{{{version}}}// للتعديل، قم بتحرير tokens/*.json في مستودع lh-ui-core ثم إعادة تنفيذ pnpm codegen.// =====================================================================================وهذا التصريح على مستوى الكود بأن تعديل dist/ ممنوع (الخط الأحمر 6).
قوالب مشتركة بين الوضعين
Section titled “قوالب مشتركة بين الوضعين”تتشارك منتجات الوضع الفاتح والوضع الداكن في android / ios / harmony / windows القالب نفسه، ولا يختلفان إلا في body الذي يُغذَّى به القالب (اسم الجذر object / enum / class مختلف).
القوالب الثابتة (بنى حاملة)
Section titled “القوالب الثابتة (بنى حاملة)”لا تملك ios/LhShadow.swift.hbs وharmony/LhShadow.ets.hbs وwindows/LhShadow.cs.hbs وwindows/LhEasing.cs.hbs فتحة body، ومحتواها ثابت بالكامل:
{{!-- harmony/LhShadow.ets.hbs --}}/// بنية رمز الظلexport interface LhShadow { color: ResourceColor /** نصف قطر التمويه */ radius: number offsetX: number offsetY: number}لأن SwiftUI / ArkUI / WinUI لا تملك نوعًا مقابًلا مباشرًا لـ «الظل المركب» أو «بيزيه»، فهي تحتاج إلى بنية حاملة على جانب المنصة؛ أما ظل Android فهو واجهة برمجية من المنصة، ولا يحتاج إلى ملف إضافي. البنيتان الحاملتان في Windows كلاهما readonly record struct:
{{!-- windows/LhShadow.cs.hbs --}}public readonly record struct LhShadow(Windows.UI.Color Color, double OffsetX, double OffsetY, double BlurRadius);مثال على القالب
Section titled “مثال على القالب”{{!-- android/LhTokens.kt.hbs --}}// لافتة الرأس…
package {{{package}}}
{{#each imports}}{{{this}}}{{/each}}
{{{body}}}{{!-- windows/LhTokens.cs.hbs --}}// لافتة الرأس…
namespace {{{namespace}}};
{{{body}}}مبادئ التصميم
Section titled “مبادئ التصميم”- قوالب رفيعة: مسؤولة عن الهيكل العام للملف فقط (تعليقات الرأس، وpackage / namespace، وفتح/إغلاق الحماية)، أما تنسيق القيم الحرفية لكل رمز فيتم بالكامل في TS الخاص بالهدف ثم يُغذَّى به القالب كـ
body. راجع طبقة العرض. noEscape: true: تحتوي القوالب على أحرف مثل<و>و#(#ifndef،#define، أقواس الأصناف العامة)، ولابد من إيقاف إلغاء HTML.- تخزين التجميع: يخزِّن
loadTemplateالخاص بـrender.tsنتيجة التجميع، تفاديًا لإعادة التجميع.
كيفية إضافة قالب جديد
Section titled “كيفية إضافة قالب جديد”- إضافة ملف
.hbsإلىcodegen/templates/<platform>/ - تجميع البيانات في الهدف المقابل واستدعاء
render('<platform>/<name>.hbs', data) - تشغيل
pnpm codegenللاطلاع على المنتجات، وpnpm test -- -uلتحديث اللقطات
Copyright © 2024-2026 FengMo WenXue