tutorials-desktop-app-rust-tauri-react_آکادمی تخصصی ریسمان
تاریخ انتشار :
میانگین: 5.0

آموزش ساخت اپلیکیشن دسکتاپ با Rust، Tauri، React و Tailwind CSS؛ از صفر تا ساخت یک برنامه واقعی

ساخت اپلیکیشن دسکتاپ دیگر محدود به فناوری‌هایی مانند C# و .NET نیست و امروزه می‌توان با استفاده از فناوری‌های مدرن وب و زبان‌های بومی، برنامه‌هایی سریع و کاربردی برای سیستم‌عامل‌های دسکتاپ ایجاد کرد. در این مجموعه آموزشی، ساخت یک اپلیکیشن دسکتاپ واقعی را با ترکیب Rust، Tauri، React، Tailwind CSS و SQLite از پایه دنبال می‌کنیم. ابتدا با معماری Tauri و تفاوت آن با Electron آشنا می‌شویم، سپس مبانی موردنیاز Rust و React را یاد می‌گیریم و در ادامه ارتباط بین رابط کاربری، Rust و دیتابیس SQLite را پیاده‌سازی می‌کنیم. هدف این آموزش، یادگیری مرحله‌به‌مرحله و ساخت یک پروژه عملی است که در نهایت بتوان آن را به‌صورت یک برنامه اجرایی ویندوز منتشر کرد.

Share
Pin
Like
Send
Share
Send
Send
Share

ساخت یک اپلیکیشن دسکتاپ برای ویندوز معمولاً ما را به سمت فناوری‌هایی مانند C#، .NET، WPF یا WinUI هدایت می‌کند. اما در سال‌های اخیر روش دیگری هم مورد توجه قرار گرفته است: استفاده از فناوری‌های وب برای رابط کاربری و یک Backend بومی برای اجرای منطق برنامه روی سیستم‌عامل.

در این مجموعه آموزشی قرار است یک مسیر عملی را دنبال کنیم و یک اپلیکیشن دسکتاپ واقعی را با ترکیب Rust، Tauri، React، Tailwind CSS و SQLite بسازیم.

در این مسیر فقط با چند ابزار مختلف آشنا نمی‌شویم؛ هدف این است که در نهایت یک برنامه دسکتاپ قابل اجرا روی ویندوز داشته باشیم و مرحله‌به‌مرحله اجزای مختلف آن را پیاده‌سازی کنیم.

چرا Tauri؟

اگر قبلاً با توسعه وب کار کرده باشید، احتمالاً با React، Vue یا سایر فریم‌ورک‌های JavaScript آشنا هستید. این ابزارها برای ساخت رابط کاربری بسیار قدرتمند هستند، اما به‌صورت مستقیم برای ساخت یک برنامه دسکتاپ بومی طراحی نشده‌اند.

اینجاست که فریم‌ورک‌هایی مانند Electron و Tauri وارد می‌شوند.

هر دو فناوری این امکان را فراهم می‌کنند که از فناوری‌های وب برای ساخت رابط کاربری یک برنامه دسکتاپ استفاده کنیم.

اما معماری آنها یکسان نیست.

در Electron، برنامه دسکتاپ معمولاً همراه با موتور Chromium و Node.js اجرا می‌شود. در مقابل، Tauri از WebView سیستم‌عامل برای نمایش رابط کاربری استفاده می‌کند و منطق بومی برنامه می‌تواند با Rust نوشته شود.

به همین دلیل Tauri برای پروژه‌هایی که به یک رابط کاربری مدرن وب در کنار منطق بومی و سبک‌تر نیاز دارند، گزینه‌ای قابل بررسی است.

Electron چیست؟

Electron یکی از شناخته‌شده‌ترین فناوری‌ها برای ساخت برنامه‌های دسکتاپ با استفاده از فناوری‌های وب است.

ایده اصلی ساده است:

HTML
CSS
JavaScript
      ↓
    Electron
      ↓
Windows / macOS / Linux

یعنی شما رابط کاربری برنامه را مانند یک وب‌سایت یا Web App می‌سازید، اما Electron محیط لازم برای اجرای آن را به شکل یک برنامه دسکتاپ فراهم می‌کند.

Electron از Chromium برای نمایش رابط کاربری و Node.js برای دسترسی به قابلیت‌های سیستم استفاده می‌کند.

به همین دلیل توسعه‌دهنده وب می‌تواند بدون یادگیری کامل فناوری‌هایی مانند WPF یا WinUI، وارد توسعه دسکتاپ شود.

برنامه‌های شناخته‌شده‌ای نیز با Electron ساخته شده‌اند؛ بنابراین Electron یک فناوری آزمایشی یا ناشناخته نیست.

اما این معماری یک هزینه مهم دارد: برنامه باید اجزای لازم برای اجرای Chromium و Node.js را نیز همراه خود داشته باشد.

Tauri چیست؟

Tauri رویکرد متفاوتی دارد.

در Tauri رابط کاربری همچنان می‌تواند با فناوری‌های وب ساخته شود:

React
   ↓
HTML / CSS / JavaScript
   ↓
WebView

اما قسمت بومی برنامه می‌تواند با Rust نوشته شود:

React
   ↓
Tauri
   ↓
Rust
   ↓
Operating System

در نتیجه می‌توانیم از React برای ساخت رابط کاربری استفاده کنیم و وظایفی که نیاز به دسترسی بومی یا منطق Backend دارند را در Rust پیاده‌سازی کنیم.

این ترکیب یکی از دلایل اصلی انتخاب Tauri در این مجموعه است.

Tauri و Electron چه تفاوتی دارند؟

مقایسه این دو فناوری باید بر اساس معماری آنها انجام شود، نه صرفاً حجم فایل خروجی.

ویژگی Electron Tauri
رابط کاربری Web Technologies Web Technologies
زبان Backend JavaScript / Node.js Rust
موتور نمایش Chromium WebView سیستم‌عامل
دسترسی به سیستم Node.js / APIs Rust / Tauri APIs
زبان اصلی Backend JavaScript Rust
مناسب برای توسعه‌دهنده وب بسیار مناسب مناسب
نیاز به یادگیری Rust خیر بله
حجم برنامه معمولاً بیشتر معمولاً کمتر
امنیت وابسته به معماری Electron مدل امنیتی Tauri

این جدول به‌تنهایی نباید باعث شود نتیجه بگیریم که یکی همیشه بهتر از دیگری است.

انتخاب فناوری به نوع پروژه، نیازمندی‌ها، تجربه تیم و معماری برنامه بستگی دارد.

اما در این مجموعه یک دلیل مهم برای انتخاب Tauri وجود دارد:

می‌خواهیم هم توسعه رابط کاربری مدرن React را داشته باشیم و هم Rust را به‌عنوان بخش بومی برنامه یاد بگیریم.

چرا Rust؟

Rust زبان اصلی Backend در پروژه ما خواهد بود.

اگر تاکنون با JavaScript یا PHP کار کرده باشید، Rust در ابتدا ممکن است کمی سخت به نظر برسد.

دلیل آن این است که Rust برخلاف بسیاری از زبان‌های سطح بالا، کنترل بیشتری روی مالکیت حافظه، Borrowing و طول عمر داده‌ها دارد.

برای مثال در Rust مفهومی به نام Ownership اهمیت بسیار زیادی دارد.

نمونه ساده:

fn main() {
    let name = String::from("Ali");

    println!("{}", name);
}

در ادامه مجموعه به‌صورت جداگانه مفاهیمی مانند:

  • Variables
  • Data Types
  • Functions
  • String و &str
  • Ownership
  • Borrowing
  • References
  • Struct
  • Enum
  • Result
  • Option
  • Error Handling

را یاد خواهیم گرفت.

بنابراین قرار نیست Rust را فقط در حد چند دستور موردنیاز Tauri یاد بگیریم.

هدف این است که مبانی Rust را به اندازه‌ای یاد بگیریم که بتوانیم Backend واقعی برنامه را با آن توسعه دهیم.

چرا React؟

رابط کاربری برنامه را با React خواهیم ساخت.

React برای ایجاد رابط‌های کاربری Component-Based بسیار مناسب است.

برای مثال می‌توانیم برنامه را به اجزای مختلف تقسیم کنیم:

App
├── Header
├── Sidebar
├── Dashboard
├── Patients
├── Reception
├── Records
├── Services
└── Reports

هر قسمت می‌تواند Component مستقل خودش را داشته باشد.

برای مثال:

function Header() {
    return (
        

برنامه کلینیک

); }

در ادامه همین ساختار را توسعه می‌دهیم و رابط کاربری واقعی برنامه را ایجاد می‌کنیم.

چرا Tailwind CSS؟

برای طراحی رابط کاربری از Tailwind CSS استفاده خواهیم کرد.

به جای اینکه برای هر عنصر CSS جداگانه بنویسیم، می‌توانیم کلاس‌های موردنیاز را مستقیماً روی عناصر قرار دهیم:


    ذخیره

این روش برای پروژه‌هایی که Componentهای زیادی دارند، امکان ساخت سریع و منظم رابط کاربری را فراهم می‌کند.

در پروژه نیز یک طراحی RTL مناسب زبان فارسی ایجاد خواهیم کرد و مواردی مانند:

  • فونت فارسی
  • Sidebar
  • Header
  • فرم‌ها
  • جدول‌ها
  • دکمه‌ها
  • کارت‌ها
  • وضعیت‌های مختلف
  • Responsive Layout

را پیاده‌سازی می‌کنیم.

SQLite؛ دیتابیس برنامه

یک برنامه دسکتاپ معمولاً به دیتابیس نیاز دارد.

برای پروژه ما SQLite انتخاب مناسبی است، زیرا دیتابیس به‌صورت یک فایل محلی روی سیستم ذخیره می‌شود و برای بسیاری از برنامه‌های دسکتاپ نیازی به نصب و مدیریت یک Database Server جداگانه وجود ندارد.

ساختار کلی برنامه ما به شکل زیر خواهد بود:

React
  │
  │ UI
  ▼
Tauri
  │
  │ Commands
  ▼
Rust
  │
  ▼
SQLite

برای مثال وقتی کاربر یک بیمار جدید ثبت می‌کند:

فرم React
    ↓
Tauri Command
    ↓
Rust
    ↓
SQLite

و هنگام نمایش اطلاعات:

SQLite
    ↓
Rust
    ↓
Tauri
    ↓
React
    ↓
UI

این ارتباط یکی از مهم‌ترین قسمت‌های این مجموعه خواهد بود.

معماری نهایی پروژه

در پایان مسیر، پروژه تقریباً چنین ساختاری خواهد داشت:

Desktop Application
│
├── React
│   ├── Components
│   ├── Pages
│   ├── Layouts
│   └── UI
│
├── Tailwind CSS
│   └── Styling
│
├── Tauri
│   ├── Window
│   ├── Commands
│   └── Application Bridge
│
├── Rust
│   ├── Business Logic
│   ├── Database
│   └── Error Handling
│
└── SQLite
    ├── Patients
    ├── Services
    ├── Records
    └── ...

البته این ساختار در طول آموزش کامل‌تر خواهد شد.

آیا Tauri فقط برای برنامه‌های ساده مناسب است؟

خیر.

این تصور که Tauri فقط برای برنامه‌های کوچک یا نمونه‌های آموزشی است، دقیق نیست.

Tauri می‌تواند برای ساخت انواع مختلف برنامه‌های دسکتاپ استفاده شود؛ اما همانند هر فناوری دیگری محدودیت‌ها و ملاحظات معماری خودش را دارد.

مثلاً اگر برنامه شما به قابلیت‌های بسیار خاص سیستم‌عامل، پردازش سنگین، سرویس‌های پس‌زمینه پیچیده یا کتابخانه‌های خاص بومی نیاز داشته باشد، باید قبل از انتخاب فناوری این نیازها بررسی شوند.

در این مجموعه نیز صرفاً به دلیل محبوبیت یک ابزار، آن را انتخاب نمی‌کنیم؛ بلکه معماری برنامه را بر اساس نیازهای واقعی پروژه بررسی خواهیم کرد.

در این مجموعه چه چیزی خواهیم ساخت؟

برای اینکه آموزش صرفاً مجموعه‌ای از مثال‌های جداگانه نباشد، یک پروژه واقعی را مرحله‌به‌مرحله توسعه می‌دهیم.

برای نمونه بخش‌های اصلی برنامه شامل موارد زیر خواهند بود:

داشبورد
بیماران
پذیرش
پرونده‌ها
خدمات
گزارش‌ها
تنظیمات

برای بخش بیماران، عملیات اصلی CRUD را خواهیم داشت:

Create
Read
Update
Delete

یعنی کاربر بتواند بیمار جدید ایجاد کند، اطلاعات بیماران را مشاهده کند، اطلاعات را ویرایش کند و در صورت نیاز رکورد را حذف کند.

در ادامه نیز ارتباط این بخش با دیتابیس SQLite و Backend نوشته‌شده با Rust را پیاده‌سازی خواهیم کرد.

مسیر یادگیری در مقالات بعدی

مقالات این مجموعه به ترتیب از مفاهیم ساده‌تر به سمت ساخت قابلیت‌های واقعی حرکت می‌کنند.

ابتدا با معماری Tauri و تفاوت آن با Electron آشنا می‌شویم.

سپس مبانی Rust را یاد می‌گیریم:

Variables
    ↓
Data Types
    ↓
Functions
    ↓
String / &str
    ↓
Ownership
    ↓
Borrowing
    ↓
References
    ↓
Struct / Enum
    ↓
Result / Option

بعد از آن وارد Tauri می‌شویم و پروژه React را به بخش Rust متصل می‌کنیم.

در مرحله بعد SQLite را اضافه کرده و اولین Migration واقعی پروژه را ایجاد می‌کنیم.

سپس CRUD و بخش‌های مختلف برنامه را توسعه می‌دهیم و در نهایت پروژه را برای Windows Build خواهیم کرد.

نتیجه

ترکیب Rust، Tauri، React و Tailwind CSS یک معماری جذاب برای ساخت برنامه‌های دسکتاپ مدرن ارائه می‌دهد.

در این معماری، React مسئول رابط کاربری است، Tailwind CSS برای طراحی رابط استفاده می‌شود، Tauri ارتباط بین بخش Web و Native را فراهم می‌کند و Rust منطق بومی و Backend برنامه را بر عهده می‌گیرد. SQLite نیز به‌عنوان دیتابیس محلی پروژه استفاده خواهد شد.

اما مهم‌ترین هدف این مجموعه صرفاً یادگیری چند فناوری نیست.

هدف این است که در پایان، بتوانیم از یک پروژه خالی شروع کنیم و مرحله‌به‌مرحله یک اپلیکیشن دسکتاپ واقعی برای ویندوز بسازیم؛ اپلیکیشنی که رابط کاربری، دیتابیس، منطق برنامه، ارتباط بین React و Rust و در نهایت فایل اجرایی Windows داشته باشد.

در مقاله بعدی، قبل از ورود به کدنویسی، ساختار Tauri، اجزای یک پروژه Tauri + React و نحوه ارتباط Frontend و Backend را بررسی می‌کنیم.

پرسش و پاسخ

1 . Tauri چیست؟
Tauri یک فریم‌ورک برای ساخت اپلیکیشن‌های دسکتاپ با استفاده از فناوری‌های وب مانند HTML، CSS و JavaScript است که می‌تواند منطق بومی برنامه را با Rust اجرا کند.

2 . تفاوت Tauri و Electron چیست؟
هر دو امکان ساخت برنامه دسکتاپ با فناوری‌های وب را فراهم می‌کنند، اما معماری آنها متفاوت است. Electron معمولاً Chromium و Node.js را همراه برنامه ارائه می‌کند، در حالی که Tauri از WebView سیستم‌عامل و Rust برای بخش بومی برنامه استفاده می‌کند.

3 . آیا برای یادگیری Tauri باید Rust بلد باشیم؟
برای شروع کار با Tauri می‌توان بدون دانش عمیق Rust شروع کرد، اما اگر قرار باشد منطق اصلی برنامه و قابلیت‌های بومی را با Rust پیاده‌سازی کنیم، یادگیری مفاهیم پایه Rust ضروری است.

4 . چرا در این پروژه از React استفاده می‌کنیم؟
React برای ساخت رابط کاربری Component-Based مناسب است و امکان ایجاد رابط‌های پیچیده و قابل توسعه را فراهم می‌کند. در این پروژه React مسئول بخش رابط کاربری برنامه خواهد بود.

5 . Tailwind CSS چه نقشی در پروژه دارد؟
Tailwind CSS برای طراحی و استایل‌دهی رابط کاربری استفاده می‌شود. با استفاده از کلاس‌های آماده آن می‌توان رابط کاربری برنامه را سریع‌تر و منظم‌تر توسعه داد.

6 . آیا می‌توان در Tauri از SQLite استفاده کرد؟
بله. SQLite برای بسیاری از برنامه‌های دسکتاپ گزینه مناسبی است، زیرا دیتابیس می‌تواند به‌صورت یک فایل محلی در اختیار برنامه قرار گیرد و نیازی به اجرای یک Database Server جداگانه ندارد.

7 . آیا می‌توان با Tauri برای ویندوز فایل EXE ساخت؟
بله. یکی از قابلیت‌های مهم Tauri امکان Build کردن برنامه برای سیستم‌عامل‌های دسکتاپ از جمله Windows است و در ادامه این مجموعه، مراحل ساخت نسخه قابل اجرای ویندوز را نیز بررسی خواهیم کرد.

دیدگاه ها

برای ارسال دیدگاه وارد حساب کاربری خود شوید.