Esta página foi traduzida automaticamente e pode conter erros. Ler o original em inglês

API

Módulos

Um app NSH importa tudo o que usa de um pequeno conjunto de módulos. Todos são nativos: o grafo reativo, o renderizador e cada módulo são implementados em Rust dentro do runtime, e o bundler mantém import ... from "nsh/..." como imports em vez de copiar código para o seu bundle. Seu bundle contém apenas o seu próprio código.

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

#Três camadas

A UI do NSH é construída em três camadas, como a do GPUI Kit (gpui, gpui-base, gpui-component):

Camada Módulos O que oferece a um app
Primitivas nsh, nsh/mobile, nsh/desktop Reatividade, os elementos host, layout, listas, canvas, animação, gestos, informações do dispositivo e as APIs próprias das plataformas
Componentes base nsh/base Componentes sem estilo que cuidam de comportamento, estado, foco e acessibilidade: um botão, documentos Markdown e HTML, pilhas de navegação e diálogos, e os diálogos do sistema, em todas as plataformas
Biblioteca de componentes a do seu app, ou uma da comunidade Botões, cards, linhas e telas com uma aparência definida

A aparência de um app é do próprio app. Sua biblioteca de componentes é a terceira camada: componentes que ele escreve a partir dos elementos host e de nsh/base, estilizados com style, classes Tailwind e seu tema, componentes Rust distribuídos em seu próprio crate, ou uma biblioteca que a comunidade publica sobre a mesma base.

Não há um módulo que reúna tudo: cada API fica em exatamente um lugar. As APIs das plataformas móveis ficam em nsh/mobile (iOS e Android) e as dos desktops em nsh/desktop (macOS, Windows, Linux); ambos podem ser importados em qualquer plataforma, então um único bundle roda em todo lugar (nas outras plataformas, suas chamadas retornam imediatamente, e platform.os informa em qual plataforma você está).

Os tipos são gerados a partir do runtime: nsh init, nsh build, nsh dev e nsh test escrevem .nsh/types ao lado do seu app, de modo que as declarações TypeScript sempre correspondem ao runtime com o qual você compila (veja Estrutura do projeto).

#Todos os módulos

Módulo Exportações Página
nsh signal, computed, effect, batch, untracked, cleanup, context, split, mount, ErrorBoundary; as primitivas View, Text, Scroll, List, Image (com Image.getSize, Image.prefetch), Canvas (com Path2D, CanvasRenderingContext2D, CanvasGradient), WebView, Video; safeArea, safeAreaInsets; Keyboard, keyboardFrame; animação (createAnimatedValue, AnimatedValue, AnimatedNode, Animated, Easing, LayoutAnimation); o ambiente (windowSize, colorScheme, setColorScheme, fontScale, pixelRatio, locale, platform, openUrl); PanResponder; Clipboard; Picker; Storage; host (available, call, on, mais params e post do SDK nativo); keymap (atalhos de teclado: mod+k, ctrl+shift+p, …); nativeComponent, nativeModule (componentes e funções que o app hospedeiro registra); acessibilidade (announce, setAccessibilityFocus, screenReaderEnabled, reduceMotion); os tipos de elementos, estilos, eventos e JSX (ViewRef, InputRef, …, ViewStyle, …) nsh
nsh/base Button, Input; TextView; createNavStack, NavStack, NavPage, Dialog; AlertDialog nsh/base
nsh/mobile isAvailable, TabBar (a barra de abas do sistema, iOS e Android), InputAccessoryView (iOS), BackHandler (Android) nsh/mobile
nsh/desktop isAvailable, Window (título, barra de título, maximizar, tela cheia), titleBar, Menu (menu do aplicativo, menus de contexto) nsh/desktop
Módulos padrão buffer, console, crypto, fs/promises, net, os, path, process, url, websocket, zlib Módulos padrão
Globais fetch, URL, TextEncoder, Blob, FormData, AbortController, Intl, timers, console, requestAnimationFrame, … (sem import) APIs globais

Páginas de referência que não são módulos:

Página O que cobre
Referência de estilos Cada chave de estilo, seu tipo e significado
Referência do Tailwind As utilities e variantes do Tailwind que class aceita

#Elementos host

Os elementos host são componentes importados como todo o resto: View, Text, Scroll, Image, List, Canvas, WebView, Video e Overlay de nsh, os componentes base (Button, Input, Dialog, NavStack, NavPage) de nsh/base, InputAccessoryView de nsh/mobile. Apenas If e Each são globais. O compilador cria os elementos no local, então os imports não têm custo em tempo de execução. Suas props estão documentadas em Elementos.