Questa pagina è stata tradotta automaticamente e può contenere errori. Leggi l'originale in inglese

API

Moduli

Un’app NSH importa tutto ciò che usa da un piccolo insieme di moduli. Sono tutti nativi: il grafo reattivo, il renderer e ogni modulo sono implementati in Rust all’interno del runtime, e il bundler mantiene import ... from "nsh/..." come import invece di copiare il codice nel bundle. Il bundle contiene solo il codice dell’app.

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

#Tre livelli

L’interfaccia di NSH è costruita su tre livelli, come quella di GPUI Kit (gpui, gpui-base, gpui-component):

LivelloModuliCosa offre a un’app
Primitivensh, nsh/mobile, nsh/desktopReattività, gli elementi host, layout, liste, canvas, animazione, gesture, informazioni sul dispositivo e le API proprie delle piattaforme
Componenti di basensh/baseComponenti privi di stile che gestiscono comportamento, stato, focus e accessibilità: un pulsante, documenti Markdown e HTML, stack di navigazione e finestre di dialogo e i dialoghi di sistema, su ogni piattaforma
Libreria di componentiquella della tua app, o una della communityPulsanti, card, righe e schermate con un aspetto definito

L’aspetto di un’app è responsabilità dell’app stessa. La sua libreria di componenti è il terzo livello: componenti che scrive a partire dagli elementi host e da nsh/base, con stili definiti tramite style, le classi Tailwind e il proprio tema, componenti Rust distribuiti nel proprio crate, oppure una libreria pubblicata dalla community sulle stesse fondamenta.

Non esiste un modulo onnicomprensivo: ogni API vive in un solo posto. Le API delle piattaforme mobile si trovano in nsh/mobile (iOS e Android) e quelle dei desktop in nsh/desktop (macOS, Windows, Linux); entrambi possono essere importati su ogni piattaforma, quindi un solo bundle funziona ovunque (sulle altre piattaforme le loro chiamate ritornano immediatamente, e platform.os indica su quale piattaforma ci si trova).

I tipi sono generati dal runtime: nsh init, nsh build, nsh dev e nsh test scrivono .nsh/types accanto alla tua app, in modo che le dichiarazioni TypeScript corrispondano sempre al runtime con cui compili (vedi Struttura del progetto).

#Tutti i moduli

ModuloEsportaPagina
nshsignal, computed, effect, batch, untracked, cleanup, context, split, mount, ErrorBoundary; le primitive View, Text, Scroll, List, Image (con Image.getSize, Image.prefetch), Canvas (con Path2D, CanvasRenderingContext2D, CanvasGradient), WebView, Video; safeArea, safeAreaInsets; Keyboard, keyboardFrame; animazione (createAnimatedValue, AnimatedValue, AnimatedNode, Animated, Easing, LayoutAnimation); l’ambiente (windowSize, colorScheme, setColorScheme, fontScale, pixelRatio, locale, platform, openUrl); PanResponder; Clipboard; Picker; Storage; host (available, call, on, più gli SDK nativi params e post); keymap (scorciatoie da tastiera: mod+k, ctrl+shift+p, …); nativeComponent, nativeModule (componenti e funzioni registrati dall’app che incorpora il runtime); accessibilità (announce, setAccessibilityFocus, screenReaderEnabled, reduceMotion); i tipi di elementi, stili, eventi e JSX (ViewRef, InputRef, …, ViewStyle, …)nsh
nsh/baseButton, Input; TextView; createNavStack, NavStack, NavPage, Dialog; AlertDialognsh/base
nsh/mobileisAvailable, TabBar (la tab bar di sistema, iOS e Android), InputAccessoryView (iOS), BackHandler (Android)nsh/mobile
nsh/desktopisAvailable, Window (titolo, barra del titolo, ingrandimento, schermo intero), titleBar, Menu (menu dell’applicazione, menu contestuali)nsh/desktop
Moduli standardbuffer, console, crypto, fs/promises, net, os, path, process, url, websocket, zlibModuli standard
Globalifetch, URL, TextEncoder, Blob, FormData, AbortController, Intl, timer, console, requestAnimationFrame, … (senza import)API globali

Pagine di riferimento che non sono moduli:

PaginaContenuto
Riferimento degli stiliOgni chiave di stile, il suo tipo e il suo significato
Riferimento TailwindLe utility e le varianti Tailwind accettate da class

#Elementi host

Gli elementi host sono componenti importati come tutto il resto: View, Text, Scroll, Image, List, Canvas, WebView, Video e Overlay da nsh, i componenti di base (Button, Input, Dialog, NavStack, NavPage) da nsh/base, InputAccessoryView da nsh/mobile. Solo If e Each sono globali. Il compilatore crea gli elementi sul posto, quindi gli import non hanno alcun costo a runtime. Le loro prop sono documentate in Elementi.