درس ۲۶ از ۴۹ · زبان صفحه

زبان صفحه در برنامه‌ی بومی

همان زبان صفحه می‌تواند به‌جای HTML/CSS مرورگر، در یک پنجره‌ی بومی اجرا شود. با --ui=native سلام رابط را با موتور رابط خودش رسم می‌کند (بدون موتور مرورگر). این درس مسیر بومی، کاربردها و تفاوت‌های مهم با وب را توضیح می‌دهد.

اجرا و ساخت بومی

برای اجرای یک صفحه به‌صورت پنجره‌ی بومی:

salam run app.salam --ui=native
salam build app.salam --ui=native

run برنامه را اجرا می‌کند و build خروجی اجرایی بومی می‌سازد. این مسیر از همان DSL صفحه استفاده می‌کند، اما خروجی آن برنامه‌ی گرافیکی بومی است نه فایل‌های HTML/CSS/JS مرورگر.

چه چیزهایی مثل وب است؟

  • ساختار درختی صفحه، عنصرها و تودرتویی
  • ویژگی‌ها و سبک‌های نوشتاری (شامل مقدارهای ساده‌تر مثل 50% و #hex)
  • بخش‌ها (component/بخش)، پارامترها، شرط‌ها/حلقه‌ها در الگوهای پویا و الگوی کلی DSL

هدف این است که بخش زیادی از توصیف رابط قابل اشتراک باشد، اما رفتار زمان اجرا و پشتیبانی قابلیت‌ها به موتور هدف وابسته است.

تفاوت‌ها و محدودیت‌ها نسبت به وب

محیط بومی مرورگر نیست، بنابراین قابلیت‌های مخصوص وب ممکن است در دسترس نباشند یا متفاوت باشند. برای نمونه، عنصرها/قابلیت‌هایی که به DOM/مرورگر وابسته‌اند (مثل اسکریپت خام مرورگر، iframe، برخی رسانه‌ها/قابلیت‌های وب، یا APIهای مخصوص سند HTML) در مسیر بومی معنی یکسانی ندارند. مترجم می‌تواند برای موارد ناسازگار در هدف بومی خطا یا هشدار بدهد.

برای UI تعاملی بومی، از الگوها و قابلیت‌های پشتیبانی‌شده‌ی موتور رابط سلام استفاده کنید و در صورت نیاز منطق برنامه را در کد Salam نگه دارید.

مسیرهای دسکتاپ در سلام

  • DSL بومی (--ui=native): رابط توسط موتور Salam رسم می‌شود؛ مناسب وقتی می‌خواهید بدون وابستگی به مرورگر یک UI بومی داشته باشید.
  • WebView (gui.webview): پنجره‌ی بومی که محتوای HTML/CSS/JS را نمایش می‌دهد (مدل شبیه Tauri/Electron)؛ برای زمانی که می‌خواهید از فناوری وب داخل پنجره‌ی دسکتاپ استفاده کنید.
  • کتابخانه‌های گرافیکی دیگر: مانند gui.raylib برای رندر/بازی و کاربردهای ویژه.

اگر می‌خواهید صفحه را به‌صورت سایت/HTML خروجی بگیرید یا در مرورگر اجرا کنید، زبان صفحه در وب را ببینید. برای API دسکتاپ WebView و بسته‌بندی، مستندات gui.webview را مطالعه کنید.