Cette page a été traduite automatiquement et peut contenir des erreurs. Lire l'original en anglais

API

Modules

Une app NSH importe tout ce qu’elle utilise depuis un petit ensemble de modules. Ils sont tous natifs : le graphe réactif, le moteur de rendu et chaque module sont implémentés en Rust dans le runtime, et le bundler conserve import ... from "nsh/..." sous forme d’imports au lieu de copier du code dans votre bundle. Votre bundle ne contient que votre propre code.

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

#Trois couches

L’interface de NSH est construite en trois couches, comme celle de GPUI Kit (gpui, gpui-base, gpui-component) :

CoucheModulesCe qu’elle apporte à une app
Primitivesnsh, nsh/mobile, nsh/desktopRéactivité, éléments hôtes, mise en page, listes, canvas, animation, gestes, informations sur l’appareil et API propres aux plateformes
Composants de basensh/baseComposants sans style qui gèrent le comportement, l’état, le focus et l’accessibilité : un bouton, des documents Markdown et HTML, des piles de navigation et des boîtes de dialogue, ainsi que les dialogues du système, sur chaque plateforme
Bibliothèque de composantscelle de votre app, ou une de la communautéBoutons, cartes, lignes et écrans avec une apparence

L’apparence d’une app lui appartient. Sa bibliothèque de composants est la troisième couche : des composants qu’elle écrit à partir des éléments hôtes et de nsh/base, stylés avec style, des classes Tailwind et son thème, des composants Rust qu’elle livre dans son propre crate, ou une bibliothèque publiée par la communauté sur les mêmes fondations.

Il n’existe pas de module fourre-tout : chaque API se trouve à un seul endroit. Les API des plateformes mobiles se trouvent dans nsh/mobile (iOS et Android) et celles des postes de bureau dans nsh/desktop (macOS, Windows, Linux) ; les deux peuvent être importés sur toutes les plateformes, de sorte qu’un seul bundle fonctionne partout (sur les autres plateformes, leurs appels retournent immédiatement, et platform.os vous indique sur quelle plateforme vous êtes).

Les types sont générés à partir du runtime : nsh init, nsh build, nsh dev et nsh test écrivent .nsh/types à côté de votre app, de sorte que les déclarations TypeScript correspondent toujours au runtime avec lequel vous compilez (voir Structure du projet).

#Tous les modules

ModuleExportsPage
nshsignal, computed, effect, batch, untracked, cleanup, context, split, mount, ErrorBoundary ; les primitives View, Text, Scroll, List, Image (avec Image.getSize, Image.prefetch), Canvas (avec Path2D, CanvasRenderingContext2D, CanvasGradient), WebView, Video ; safeArea, safeAreaInsets ; Keyboard, keyboardFrame ; animation (createAnimatedValue, AnimatedValue, AnimatedNode, Animated, Easing, LayoutAnimation) ; l’environnement (windowSize, colorScheme, setColorScheme, fontScale, pixelRatio, locale, platform, openUrl) ; PanResponder ; Clipboard ; Picker ; Storage ; host (available, call, on, plus les SDK natifs params et post) ; keymap (raccourcis clavier : mod+k, ctrl+shift+p, …) ; nativeComponent, nativeModule (composants et fonctions que l’app hôte enregistre) ; accessibilité (announce, setAccessibilityFocus, screenReaderEnabled, reduceMotion) ; les types des éléments, des styles, des événements et de JSX (ViewRef, InputRef, …, ViewStyle, …)nsh
nsh/baseButton, Input ; TextView ; createNavStack, NavStack, NavPage, Dialog ; AlertDialognsh/base
nsh/mobileisAvailable, TabBar (la barre d’onglets du système, iOS et Android), InputAccessoryView (iOS), BackHandler (Android)nsh/mobile
nsh/desktopisAvailable, Window (titre, barre de titre, agrandissement, plein écran), titleBar, Menu (menu de l’application, menus contextuels)nsh/desktop
Modules standardbuffer, console, crypto, fs/promises, net, os, path, process, url, websocket, zlibModules standard
Globauxfetch, URL, TextEncoder, Blob, FormData, AbortController, Intl, minuteries, console, requestAnimationFrame, … (sans import)API globales

Pages de référence qui ne sont pas des modules :

PageContenu
Référence des stylesChaque clé de style, son type et sa signification
Référence TailwindLes utilitaires et variantes Tailwind acceptés par class

#Éléments hôtes

Les éléments hôtes sont des composants importés comme tout le reste : View, Text, Scroll, Image, List, Canvas, WebView, Video et Overlay depuis nsh, les composants de base (Button, Input, Dialog, NavStack, NavPage) depuis nsh/base, InputAccessoryView depuis nsh/mobile. Seuls If et Each sont des globaux. Le compilateur crée les éléments sur place, si bien que les imports ne coûtent rien à l’exécution. Leurs props sont documentées sous Éléments.