이 페이지의 번역은 오류가 있을 수 있습니다. 영어 원문 보기

API

모듈

Native Shell 앱은 필요한 기능을 몇 개의 모듈에서 가져옵니다. 반응성 그래프, 렌더러, 각 모듈은 모두 런타임 내부에 Rust로 구현되어 있습니다. 번들러는 import ... from "nsh/..."를 그대로 유지하므로 앱 번들에는 개발자가 작성한 코드만 들어갑니다.

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

#UI의 세 계층

NSH의 UI는 GPUI Kit의 gpui, gpui-base, gpui-component에 대응하는 세 계층으로 구성됩니다.

계층모듈앱에 제공하는 기능
기본 요소nsh, nsh/mobile, nsh/desktop반응성, 호스트 요소, 레이아웃, 목록, 캔버스, 애니메이션, 제스처, 기기 정보와 플랫폼별 API
기본 컴포넌트nsh/base버튼, Markdown·HTML 문서, 내비게이션 스택, 대화상자와 시스템 대화상자. 모든 플랫폼에서 동작, 상태, 포커스, 접근성을 처리하며 스타일은 앱에서 지정합니다.
컴포넌트 라이브러리앱 자체 또는 커뮤니티 라이브러리앱 디자인에 맞게 스타일을 적용한 버튼, 카드, 행, 화면

앱의 시각적 디자인은 세 번째 계층에서 결정합니다. 호스트 요소와 nsh/base로 컴포넌트를 만들고 style, Tailwind 클래스와 테마로 꾸밀 수 있습니다. 앱의 크레이트에 Rust 컴포넌트를 포함하거나 같은 기반으로 만들어진 커뮤니티 라이브러리를 사용해도 됩니다.

각 API는 한 모듈에서만 제공합니다. iOS와 Android 전용 API는 nsh/mobile에, macOS, Windows, Linux 전용 API는 nsh/desktop에 있습니다. 두 모듈 모두 모든 플랫폼에서 가져올 수 있어 번들 하나를 여러 환경에서 실행할 수 있습니다. 대상이 아닌 플랫폼에서 호출하면 즉시 반환합니다. 실행 중인 플랫폼은 platform.os로 확인합니다.

타입은 런타임에서 생성합니다. nsh init, nsh build, nsh dev, nsh test를 실행하면 앱 디렉터리의 .nsh/types에 TypeScript 선언이 생성되므로 빌드에 사용한 런타임과 선언이 일치합니다. 프로젝트 구조에서 파일 배치를 확인할 수 있습니다.

#전체 모듈

모듈내보내는 API문서
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표준 모듈
전역 APIfetch, URL, TextEncoder, Blob, FormData, AbortController, Intl, 타이머, console, requestAnimationFrame, … (가져오기 없이 사용)전역 API

다음 문서에서는 모듈 전반에 걸쳐 쓰이는 스타일을 정리합니다.

문서내용
스타일 레퍼런스각 스타일 속성의 이름, 타입, 의미
Tailwind 레퍼런스class에서 사용할 수 있는 Tailwind 유틸리티와 변형

#호스트 요소

호스트 요소도 컴포넌트처럼 가져옵니다. View, Text, Scroll, Image, List, Canvas, WebView, Video, Overlay는 nsh에서, 기본 컴포넌트(Button, Input, Dialog, NavStack, NavPage)는 nsh/base에서, InputAccessoryView는 nsh/mobile에서 가져옵니다. If와 Each만 전역으로 제공됩니다. 컴파일러가 사용 위치에 요소를 직접 생성하므로 가져오기에 따른 런타임 비용은 없습니다. 각 요소의 속성은 요소 문서에서 설명합니다.