このページは機械翻訳のため、誤りを含む場合があります。 英語の原文を読む

API

モジュール

NSH アプリは、使用するすべてを少数のモジュールからインポートします。これらはすべてネイティブです。リアクティブグラフ、レンダラー、各モジュールはランタイム内部で Rust により実装されており、バンドラーは import ... from "nsh/..." をコードとしてバンドルにコピーせず、インポートのまま保持します。バンドルに含まれるのは、あなた自身のコードだけです。

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

#3 つのレイヤー

NSH の UI は、GPUI Kit と同様に 3 つのレイヤーで構成されています(gpui、gpui-base、gpui-component)。

レイヤーモジュールアプリに提供するもの
プリミティブnsh、nsh/mobile、nsh/desktopリアクティビティ、ホスト要素、レイアウト、リスト、キャンバス、アニメーション、ジェスチャー、デバイス情報、各プラットフォーム固有の API
ベースコンポーネントnsh/base動作、状態、フォーカス、アクセシビリティを担う、スタイルのないコンポーネント。ボタン、Markdown と HTML のドキュメント、ナビゲーションスタック、ダイアログ、システムのダイアログを、すべてのプラットフォームで提供します
コンポーネントライブラリアプリ自身のもの、またはコミュニティのもの見た目を備えたボタン、カード、行、画面

アプリの見た目は、そのアプリ自身のものです。コンポーネントライブラリは第 3 のレイヤーにあたります。ホスト要素と nsh/base から作成し、style、Tailwind クラス、テーマでスタイルを付けたコンポーネント、独自の crate で提供する Rust コンポーネント、あるいは同じ基盤上でコミュニティが公開しているライブラリを使えます。

すべてを含むモジュールはありません。各 API はちょうど 1 か所に置かれています。モバイルプラットフォーム(iOS と Android)の API は nsh/mobile に、デスクトップ(macOS、Windows、Linux)の API は nsh/desktop にあります。どちらもすべてのプラットフォームでインポートできるため、1 つのバンドルがどこでも動作します(他のプラットフォームでは、これらの呼び出しはただちに戻ります。現在のプラットフォームは 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 リファレンスclass が受け付ける Tailwind のユーティリティとバリアント

#ホスト要素

ホスト要素は、他のものと同様にインポートして使うコンポーネントです。View、Text、Scroll、Image、List、Canvas、WebView、Video、Overlay は nsh から、ベースコンポーネント(Button、Input、Dialog、NavStack、NavPage)は nsh/base から、InputAccessoryView は nsh/mobile からインポートします。グローバルなのは If と Each だけです。コンパイラが要素をその場で生成するため、インポートによる実行時のコストはありません。各 props は要素のページに記載されています。