تُرجمت هذه الصفحة آليًا وقد تحتوي على أخطاء. اقرأ الأصل الإنجليزي

API

الوحدات

يستورد تطبيق NSH كل ما يستخدمه من مجموعة صغيرة من الوحدات. وكلها أصلية: فالرسم البياني التفاعلي ومحرك العرض وكل وحدة منفذة بلغة Rust داخل بيئة التشغيل، ويُبقي المُجمِّع import ... from "nsh/..." كاستيرادات بدلًا من نسخ الشيفرة إلى الحزمة الناتجة. لذلك لا تحتوي حزمتك إلا على شيفرتك أنت.

import { createAnimatedValue, mount, signal, windowSize } from "nsh";
import { Button } from "nsh/base";
import { TabBar } from "nsh/mobile";

#ثلاث طبقات

تُبنى واجهة المستخدم في NSH على ثلاث طبقات، كما هو الحال في GPUI Kit (gpui، gpui-base، gpui-component):

الطبقةالوحداتما تقدمه للتطبيق
العناصر الأوليةnsh، nsh/mobile، nsh/desktopالتفاعلية، والعناصر المضيفة، والتخطيط، والقوائم، وcanvas، والرسوم المتحركة، والإيماءات، ومعلومات الجهاز، وواجهات API الخاصة بالمنصات
المكونات الأساسيةnsh/baseمكونات بلا تنسيق تتولى السلوك والحالة والتركيز وإمكانية الوصول: زر، ومستندات Markdown وHTML، ومكدسات التنقل، والحوارات وحوارات النظام، على كل منصة
مكتبة المكوناتمكتبة تطبيقك، أو مكتبة من المجتمعأزرار وبطاقات وصفوف وشاشات ذات مظهر محدد

مظهر التطبيق شأن خاص به. ومكتبة المكونات هي الطبقة الثالثة: مكونات يكتبها التطبيق انطلاقًا من العناصر المضيفة وnsh/base، وينسقها باستخدام style وفئات Tailwind وسمته، أو مكونات Rust يشحنها في crate خاص به، أو مكتبة ينشرها المجتمع على الأساس نفسه.

لا توجد وحدة شاملة: فكل واجهة API موجودة في مكان واحد فقط. وتوجد واجهات API الخاصة بالمنصات المحمولة في nsh/mobile (iOS وAndroid)، وواجهات أنظمة سطح المكتب في nsh/desktop (macOS وWindows وLinux)؛ ويمكن استيراد الوحدتين على كل منصة، ولذلك تعمل حزمة واحدة في كل مكان (وعلى المنصات الأخرى تعود استدعاءاتهما فورًا، ويخبرك platform.os بالمنصة التي تعمل عليها).

تُولَّد الأنواع من بيئة التشغيل: إذ يكتب nsh init وnsh build وnsh dev وnsh test الملف .nsh/types بجوار تطبيقك، فتطابق تصريحات TypeScript دائمًا بيئة التشغيل التي تبني بها (انظر هيكل المشروع).

#جميع الوحدات

الوحدةالصادراتالصفحة
nshsignal، computed، effect، batch، untracked، cleanup، context، split، mount، ErrorBoundary؛ والعناصر الأولية View، Text، Scroll، List، Image (مع Image.getSize، Image.prefetch)، Canvas (مع Path2D، CanvasRenderingContext2D، CanvasGradient)، WebView، Video؛ safeArea، safeAreaInsets؛ Keyboard، keyboardFrame؛ الرسوم المتحركة (createAnimatedValue، AnimatedValue، AnimatedNode، Animated، Easing، LayoutAnimation)؛ البيئة (windowSize، colorScheme، setColorScheme، fontScale، pixelRatio، locale، platform، openUrl)؛ PanResponder؛ Clipboard؛ Picker؛ Storage؛ host (available، call، on، بالإضافة إلى حزمتي SDK الأصليتين params وpost)؛ keymap (اختصارات لوحة المفاتيح: mod+k، ctrl+shift+p، …)؛ nativeComponent، nativeModule (مكونات ودوال يسجلها التطبيق المضمِّن)؛ إمكانية الوصول (announce، setAccessibilityFocus، screenReaderEnabled، reduceMotion)؛ وأنواع العناصر والأنماط والأحداث وJSX (ViewRef، InputRef، …، ViewStyle، …)nsh
nsh/baseButton، Input؛ TextView؛ createNavStack، NavStack، NavPage، Dialog؛ AlertDialognsh/base
nsh/mobileisAvailable، TabBar (شريط علامات التبويب الخاص بالنظام، على iOS وAndroid)، InputAccessoryView (iOS)، BackHandler (Android)nsh/mobile
nsh/desktopisAvailable، Window (العنوان، وشريط العنوان، والتكبير، وملء الشاشة)، titleBar، Menu (قائمة التطبيق، والقوائم السياقية)nsh/desktop
الوحدات القياسيةbuffer، console، crypto، fs/promises، net، os، path، process، url، websocket، zlibالوحدات القياسية
العناصر العامةfetch، URL، TextEncoder، Blob، FormData، AbortController، Intl، المؤقتات، console، requestAnimationFrame، … (دون استيراد)واجهات API العامة

صفحات مرجعية ليست وحدات:

الصفحةما تغطيه
مرجع الأنماطكل مفتاح نمط ونوعه ومعناه
مرجع Tailwindأدوات Tailwind المساعدة ومتغيراتها التي يقبلها class

#العناصر المضيفة

العناصر المضيفة مكونات تُستورد مثل أي شيء آخر: View وText وScroll وImage وList وCanvas وWebView وVideo وOverlay من nsh، والمكونات الأساسية (Button وInput وDialog وNavStack وNavPage) من nsh/base، وInputAccessoryView من nsh/mobile. أما If وEach فهما وحدهما العنصران العامان. ينشئ المُجمِّع العناصر في موضعها، فلا تكلّف الاستيرادات شيئًا وقت التشغيل. وتُوثَّق خصائصها ضمن العناصر.