Rust Tauri (الهام گرفته از Electron) 1.3: شروع به ساخت برنامه ها
خلاصه
Tauri یک سازنده برنامه «برای استقرار چند پلتفرمی» است که از Electron بر اساس Node.js و فناوری وب الهام گرفته شده است.
این زبان به زبان Rust (rustlang)، یک زبان برنامه نویسی همه منظوره، با هدف عملکرد، قابلیت اطمینان و بهره وری نوشته شده است.
یکی از جنبه های خوب Tauri اندازه باندل آن است. “با استفاده از رندر وب بومی سیستم عامل”، اندازه برنامه ها زمانی که با بهینه سازی ساخته می شوند می توانند بسیار کوچک باشند.
علاوه بر این، انتظارات بیشتری در مورد امنیت، عملکرد، پلتفرم متقابل و استقلال از فریم ورک های فرانت اند وجود دارد.
این پست نحوه نصب آن و ایجاد اولین برنامه با آن را نشان می دهد.
محیط
آموزش
Rust را نصب کنید
نصب rustup
، نصب کننده زنجیره ابزار، (با pacman -Sy rustup
) و اجرا:
$ rustup default stable
در نهایت به صورت زیر چاپ شد:
info: using existing install for 'stable-x86_64-unknown-linux-gnu'
info: default toolchain set to 'stable-x86_64-unknown-linux-gnu'
stable-x86_64-unknown-linux-gnu unchanged - rustc 1.69.0 (84c898d65 2023-04-16)
علاوه بر این، زمانی که نسخه قدیمیتری دارید، ممکن است مجبور شوید آن را به روز کنید rustup update
.
کلاینت Tauri را نصب کنید
اجرا کن:
$ cargo install tauri-cli
خروجی این بود:
Updating crates.io index
Downloaded tauri-cli v1.3.0
Downloaded 1 crate (1.2 MB) in 10.18s
Installing tauri-cli v1.3.0
(...)
Finished release [optimized] target(s) in 17m 08s
Installing /(...)/.cargo/bin/cargo-tauri
Installed package `tauri-cli v1.3.0` (executable `cargo-tauri`)
برای ایجاد پروژه های Tauri فایل اجرایی را نصب کنید
$ cargo install create-tauri-app
خروجی این بود:
Updating crates.io index
Downloaded create-tauri-app v3.4.0
(...)
Compiling create-tauri-app v3.4.0
Finished release [optimized] target(s) in 23.91s
Installing /(...)/.cargo/bin/cargo-create-tauri-app
Installed package `create-tauri-app v3.4.0` (executable `cargo-create-tauri-app`)
اولین پروژه ایجاد کنید
$ cargo create-tauri-app tauri-example
از شما پرسیده می شود:
? Choose which language to use for your frontend ›
❯ TypeScript / JavaScript (pnpm, yarn, npm)
❯ Rust (cargo)
مانند بالا، گزینه ها عبارتند از:
- TypeScript (با pnpm / نخ / npm)
- زنگ زدگی (با محموله).
من Rust را انتخاب کردم.
سپس از شما پرسیده می شود:
? Choose your UI template ›
❯ Vanilla
❯ Yew (https://yew.rs/)
❯ Leptos (https://github.com/leptosrs/leptos)
❯ Sycamore (https://sycamorers.netlify.app/)
مانند بالا، گزینه ها عبارتند از:
من وانیل را برای سادگی این آموزش انتخاب کردم.
بقیه نامزدهای قوی دیگری هستند که برای WebAssembly مناسب هستند.
خروجی این بود:
Template created! To get started run:
cd tauri-example
cargo tauri dev
آماده سازی را تأیید کنید
وارد:
$ cd tauri-example
آنچه تولید می شود
باید وجود داشته باشد:
$ ls
README.md src/ src-tauri/
در بالا، src
دارای دارایی های رابط کاربری front-end مانند این است:
$ ls src
assets/ index.html main.js style.css
اجرای آزمایشی
$ cargo tauri dev
خروجی این بود:
Info Watching /(...)/tauri-example/src-tauri for changes...
Updating crates.io index
(...)
Compiling webkit2gtk v0.18.2
Finished dev [unoptimized + debuginfo] target(s) in 1m 57s
سپس خواهید دید:
زیبا به نظر می رسد. خوب، کافی نیست، زیرا آنچه نشان داده می شود چیزی بیش از حداقل نمای پیش فرض Tauri نیست.
برای خروج روی “x” در بالای سمت راست پنجره کلیک کنید (یا Ctrl + c را وارد کنید).
دارایی های UI سفارشی ایجاد کنید
دایرکتوری را آماده کنید
برای ایجاد دایرکتوری برای رابط کاربری سفارشی خود اجرا کنید:
$ mkdir ui
حالا باید وجود داشته باشد:
$ ls
README.md src/ src-tauri/ ui/
اولین دیدگاه خود را بنویسید
$ nvim ui/index.html
پسندیدن:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0" />
<title>Document</title>
</head>
<body>
<h1>Welcome from Tauri!</h1>
</body>
</html>
البته ممکن است به روش خودتان راحت اینجا بنویسید.
بازنویسی قالب Tauri
بازنویسی خواهیم کرد src-tauri
، بخصوص src-tauri/tauri.conf.json
.
اجرا کن:
$ cargo tauri init --force
به صورت زیر از شما سوال می شود.
دو سوال اول در مورد نام برنامه و عنوان آن است.
? What is your app name?
tauri-example
? What should the window title be?
Tauri Example
سپس، شما باید مشخص کنید ../ui
در سوالات زیر:
? Where are your web assets (HTML/CSS/JS) located, relative to the "<current dir>/src-tauri/tauri.conf
? Where are your web assets (HTML/CSS/JS) located, relative to the "<current dir>/src-tauri/tauri.conf.json" file that will be created?
../ui
? What is the url of your dev server?
../ui
هدف در راه است!
در دو سوال آخر جای خالی بگذارید، زیرا ما در این لحظه از TypeScript استفاده نمی کنیم.
? What is your frontend dev command?
? What is your frontend build command?
انجام شده.
برای توسعه بدوید
$ cargo tauri dev
خواهید دید:
به عنوان برنامه بسازید
بعد، بیایید اجرا کنیم build
:
$ cargo tauri build
شاید برای اولین بار مانند زیر شکست بخورید:
Error You must change the bundle identifier in `tauri.conf.json > tauri > bundle > identifier`. The default value `com.tauri.dev` is not allowed as it must be unique across applications.
حتی اگر بخواهید مستقیماً باینری را اجرا کنید، باید شکست بخورید:
$ ./src-tauri/target/debug/tauri-example
برای خروج Ctrl + c را وارد کنید.
خب چرا؟ این به دلیل شناسه دامنه است.
در نهایت ویرایش کنید تا با موفقیت ساخته شود:
$ nvim src-tauri/tauri.conf.json
پسندیدن
- "identifier": "com.tauri.dev",
+ "identifier": "localhost",
سپس اجرا کنید
$ cargo tauri build
خروجی این بود:
(...)
Compiling webkit2gtk v0.18.2
Finished release [optimized] target(s) in 2m 06s
Bundling tauri-example_0.1.0_amd64.deb (/(...)/tauri-example/src-tauri/target/release/bundle/deb/tauri-example_0.1.0_amd64.deb)
Bundling tauri-example_0.1.0_amd64.AppImage (/(...)/tauri-example/src-tauri/target/release/bundle/appimage/tauri-example_0.1.0_amd64.AppImage)
Finished 2 bundles at:
/(...)/tauri-example/src-tauri/target/release/bundle/deb/tauri-example_0.1.0_amd64.deb
/(...)/tauri-example/src-tauri/target/release/bundle/appimage/tauri-example_0.1.0_amd64.AppImage
نتیجه
اکنون می توانید اولین برنامه Tauri خود را که برای پلتفرم خود بهینه شده است اجرا کنید.
$ ./src-tauri/target/release/tauri-example
علاوه بر این، AppImage نیز در دسترس است:
$ ./src-tauri/target/release/bundle/appimage/tauri-example_0.1.0_amd64.AppImage
اندازه فایل اجرایی، tauri-example
(که در src-tauri/target/release/
)، فقط 9.1 مگابایت است. فوق العاده است 🙂
بسته نرم افزاری AppImage، tauri-example_0.1.0_amd64.AppImage
(که در src-tauri/target/release/bundle/appimage/
) – “برنامه های لینوکس که در هر جایی اجرا می شوند” 120.4 مگابایت است.
برنامه های ساخت مبارک!!!