본문으로 건너뛰기

Tauri 구조

소개

Tauri는 구성이 매우 용이하고 엔지니어가 다양한 응용 프로그램을 만들 수 있도록 해주는 다중 언어, 범용 도구 묶음입니다. Rust 도구들과 웹뷰에서 그린 HTML을 사용하여 데스크톱 응용 프로그램을 개발하는 데 사용합니다. Tauri로 만든 앱은 많은 선택적 JS API와 Rust API가 함께 제공되어 웹뷰에서 메시지 전달을 통해 시스템을 제어할 수 있도록 해줍니다. Developers can extend the default API with their own functionality and bridge the Webview and Rust-based backend easily.

Tauri apps can have custom menus and tray-type interfaces. They can be updated and are managed by the user's operating system as expected. They are very small because they use the OS's webview. 최종 바이너리가 Rust로부터 컴파일되므로 런타임을 포함하지 않습니다. This makes the reversing of Tauri apps not a trivial task.

Tauri가 하지 않는 것

Tauri는 경량 커널 래퍼가 아닙니다. Instead, it directly uses WRY and TAO to do the heavy lifting in making system calls to the OS.

Tauri는 가상 머신이나 가상화 환경이 아닙니다. Instead, it is an application toolkit that allows making Webview OS applications.

핵심 생태계

graph TB; subgraph Core direction LR tauri TB tauri-runtime tauri-macros tauri-utils end %% This section should be organized from top to bottom tauri-build tauri-codegen tauri-runtime-wry tauri-runtime-wry -.-> WRY subgraph Upstream direction LR WRY TAO WRY -.-> TAO end style Core fill:#abd0f9,stroke:#1D81EE,stroke-width:4px style Upstream fill:#abd0f9,stroke:#1D81EE,stroke-width:4px style tauri fill:#fad3a9,stroke:#F28918,stroke-width:4px

tauri

모든 걸 함께 품은 주요 crate입니다. 런타임, 매크로, 유용한 기능들과 API까지 한번에 가져다 줍니다. It reads the tauri.conf.json file at compile time to bring in features and undertake the actual configuration of the app (and even the Cargo.toml file in the project's folder). It handles script injection (for polyfills / prototype revision) at runtime, hosts the API for systems interaction, and even manages the updating process.

tauri-runtime

The glue layer between Tauri itself and lower-level webview libraries.

tauri-macros

tauri-codegen crate를 활용하여 컨텍스트, 핸들러 및 명령에 대한 매크로를 생성합니다.

tauri-utils

구성 파일 해석, 플랫폼 감지, CSP 주입 및 애셋 관리와 같은 유용한 도구를 제공하고 여러 곳에서 재사용할 수 있는 공통 코드입니다.

tauri-build

Applies the macros at build-time to rig some special features needed by cargo.

tauri-codegen

Embeds, hashes, and compresses assets, including icons for the app as well as the system tray. Parses tauri.conf.json at compile time and generates the Config struct.

tauri-runtime-wry

This crate opens up direct systems-level interactions specifically for WRY, such as printing, monitor detection, and other windowing-related tasks.

Tauri 도구

API (JavaScript / TypeScript)

웹뷰가 백엔드 활동을 호출하고 수신할 수 있도록 프론트엔드 프레임워크로 가져와 cjsesm JavaScript 끝점을 생성해주는 Typescript 라이브러리입니다. 또한, 일부 프레임워크의 경우 이렇게 하는 것이 더 최적이기 때문에 순수한 TypeScript로 제공됩니다. 웹뷰에서 호스트로 메시지를 전달할 때 사용합니다.

Bundler (Rust / Shell)

Tauri 앱을 빌드하는 과정에서 감지하거나 플랫폼에 대해 감지하고 알려주는 라이브러리입니다. 현재는 macOS, Windows, Linux만 지원하지만, 향후 모바일 플랫폼까지 지원하게 될 것입니다. 아마, Tauri 프로젝트 외부에서 사용할 수 있을 것입니다.

cli.rs (Rust)

이 Rust 실행 파일은 CLI를 위해 필요로 하는 모든 활동에 대한 전체 인터페이스를 제공합니다. macOS, Windows, 그리고 Linux를 지원합니다.

cli.js (JavaScript)

각 플랫폼용 npm 패키지를 만들기 위해 napi-rs를 활용해 cli.rs를 감싼 래퍼입니다.

create-tauri-app (JavaScript)

개발 팀이 (미리 구성해둔) 프론트엔드 프레임워크 중 하나를 선택하면 새로운 tauri-apps 프로젝트를 신속하게 스캐폴딩하도록 돕는 도구 묶음입니다.

상위 Crate

Tauri-Apps 조직에서는 Tauri 응용 프로그램의 창를 만들고 관리하는 TAO와 창 안의 웹뷰 인터페이스를 처리하는 두 가지의 상위 Crate를 유지, 관리를 하고 있습니다.

TAO

Windows, macOS, Linux, iOS, Android와 같은 모든 주요 플랫폼을 지원하는 교차 플랫폼 창 생성용 Rust 라이브러리입니다. Written in Rust, it is a fork of winit that we have extended for our own needs - like menu bar and system tray.

WRY

Tauri가 사용하는 WRY는 Windows, macOS, Linux와 같은 모든 주요 데스크탑 플랫폼을 지원하는 교차 플랫폼 웹뷰 렌더링 Rust 라이브러리입니다. Tauri는 어떤 웹뷰를 사용할지 (그리고, 어떻게 상호작용할 것인지) 결정해주는 추상화 계층인 WRY를 사용합니다.

추가 도구

tauri-action

모든 플랫폼을 대상으로 Tauri 바이너리를 빌드하는 GitHub workflow입니다. Tauri가 설정되어 있지 않더라도 (아주 단순한 수준의) Tauri 앱을 만드는 것까지도 할 수 있습니다.

tauri-vscode

본 프로젝트는 Visual Studio Code 인터페이스를 향상시킬 수 있도록 여러 좋은 기능들을 제공합니다.

vue-cli-plugin-tauri

vue-cli 프로젝트 안에서 Tauri를 아주 빠르게 설치할 수 있도록 합니다.

플러그인

Tauri 플러그인 안내

(공식적으로 지원하는 플러그인이 있다고 해도) 일반적으로 플러그인은 제 3자가 작성합니다. 플러그인은 일반적으로 3가지 작업을 수행합니다.

  1. Rust 코드가 "무언가"를 할 수 있도록 활성화
  2. 앱에 쉽게 통합할 수 있도록 인터페이스 접착제를 제공합니다.
  3. Rust 코드에 연결을 위한 JavaScript API를 함께 제공합니다.

Tauri 플러그인의 예시는 다음과 같습니다:

허가서

Tauri 그 자체는 MIT 혹은 Apache 2.0 허가서를 사용합니다. Tauri를 재포장하고 원본 코드를 수정한다면, 업스트림 허가서를 준수하는 지 확인할 책임이 있습니다. Tauri는 어떤 목적에 대한 적합성의 명시적인 이유 없이 있는 그대로 제공됩니다.

여기에서 우리의 소프트웨어 자재 명세을 읽을 수 있습니다.

다음 단계

당신의 첫 Tauri 앱

개발 주기

출시하기

업데이트하기