144

Üstün
Katılım
15 Aralık 2023
Mesajlar
4.557
Makaleler
1
Çözümler
13
Beğeniler
8.187
Merhabalar.

Bugün Tauri (ElectronJS alternatifi cross-platform desktop and mobile application software framework) üzerinde backendimiz olan Rust'tan frontend'e (JavaScript/TypeScript) ulaştırma yöntemlerini anlatacağım.

Öncelikle Tauri uygulamalarında backend Rust'tır. Electron'daki gibi JavaScript değildir.

Frontend'ten almak için şunları kullanırız:

- invoke ve await invoke.

Örnek kod (Tauri 2 için):

JavaScript:
import { invoke } from "@tauri-apps/api/core";

const weather = await invoke("get_weather", {
  city: "Istanbul",
});


veya:

JavaScript:
// When using the Tauri API npm package:
import { invoke } from '@tauri-apps/api/core';

// When using the Tauri global script (if not using the npm package)
// Be sure to set `app.withGlobalTauri` in `tauri.conf.json` to true
const invoke = window.__TAURI__.core.invoke;

// Invoke the command
invoke('my_custom_command');

Rust'ta ise Tauri commands oluşturmalıyız.

Mutlaka command oluşturken şunu kullanmalıyız:

Kod:
#[tauri::command]

Örnek kodlar:

Kod:
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![my_custom_command])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

Dahası da vardır ve Rust ve JavaScript üzerinde devam ettiriz.

Mesela:

Kod:
#[tauri::command]
pub fn my_custom_command() {
  println!("I was invoked from JavaScript!");
}

Bunları yapmazsınız Rust'tan veriyi alamazsınız frontend üzerinde.

Bugünlük bu kadardı.
 
Merhabalar.

Bugün Tauri (ElectronJS alternatifi cross-platform desktop and mobile application software framework) üzerinde backendimiz olan Rust'tan frontend'e (JavaScript/TypeScript) ulaştırma yöntemlerini anlatacağım.

Öncelikle Tauri uygulamalarında backend Rust'tır. Electron'daki gibi JavaScript değildir.

Frontend'ten almak için şunları kullanırız:

- invoke ve await invoke.

Örnek kod (Tauri 2 için):

JavaScript:
import { invoke } from "@tauri-apps/api/core";

const weather = await invoke("get_weather", {
  city: "Istanbul",
});


veya:

JavaScript:
// When using the Tauri API npm package:
import { invoke } from '@tauri-apps/api/core';

// When using the Tauri global script (if not using the npm package)
// Be sure to set `app.withGlobalTauri` in `tauri.conf.json` to true
const invoke = window.__TAURI__.core.invoke;

// Invoke the command
invoke('my_custom_command');

Rust'ta ise Tauri commands oluşturmalıyız.

Mutlaka command oluşturken şunu kullanmalıyız:

Kod:
#[tauri::command]

Örnek kodlar:

Kod:
#[cfg_attr(mobile, tauri::mobile_entry_point)]
pub fn run() {
  tauri::Builder::default()
    .invoke_handler(tauri::generate_handler![my_custom_command])
    .run(tauri::generate_context!())
    .expect("error while running tauri application");
}

Dahası da vardır ve Rust ve JavaScript üzerinde devam ettiriz.

Mesela:

Kod:
#[tauri::command]
pub fn my_custom_command() {
  println!("I was invoked from JavaScript!");
}

Bunları yapmazsınız Rust'tan veriyi alamazsınız frontend üzerinde.

Bugünlük bu kadardı.
- Tauri uygulamanızda backend Rust kodunu frontend JavaScript/TypeScript ile entegre etmek için öncelikle invoke işlevini kullanmalısınız.

Adımlar:​


1. Backend Rust Kodu Hazırlama:
- Tauri'de bir komut oluşturun. Bunun için #[tauri::command] özniteliğini kullanın.
Kod:
rust
   #[tauri::command]
   pub fn my_custom_command() {
       println!("I was invoked from JavaScript!");
       // İstenilen veriyi burada döndürebilirsiniz
   }

2. Tauri Builder'ı Ayarlama:
- Tauri uygulamanızda komutunuzu tanımlamak için invoke_handler kullanarak yapılandırmayı gerçekleştirin.
Kod:
rust
   #[cfg_attr(mobile, tauri::mobile_entry_point)]
   pub fn run() {
       tauri::Builder::default()
           .invoke_handler(tauri::generate_handler![my_custom_command])
           .run(tauri::generate_context!())
           .expect("error while running tauri application");
   }

3. Frontend Kodunu Yazma:
- Tauri komutunuzu frontend'den çağırmak için aşağıdaki örneği kullanın.
Kod:
javascript
   import { invoke } from "@tauri-apps/api/core";

   const result = await invoke("my_custom_command");
   console.log(result); // Rust'tan dönen veriyi burada işleyebilirsiniz

4. Hata Kontrolü Yapma:
- İstemci tarafında hata kontrolü yapmayı unutmayın. try catch bloğu ile hataları yakalayabilirsiniz.
Kod:
javascript
   try {
       const result = await invoke("my_custom_command");
       console.log(result);
   } catch (error) {
       console.error("Error invoking command: ", error);
   }

5. Veri İletişimi:
- Eğer bir veri döndürmek istiyorsanız, Rust fonksiyonunuzda String, i32, vb. verileri döndürebilirsiniz.
Kod:
rust
   #[tauri::command]
   pub fn get_weather(city: String) -> String {
       // İlgili hava durumu bilgisini al
       // Burada bir HTTP isteği yaparak gerçek veriyi alabilirsiniz
       format!("The weather in {} is sunny.", city)
   }

6. Komutları Çağırma:
- Frontend'de get_weather komutunu çağırarak hava durumu verisini alabilirsiniz.
Kod:
javascript
   const weather = await invoke("get_weather", { city: "Istanbul" });
   console.log(weather);

Bu adımları takip ederek Tauri uygulamanızda Rust backend'den JavaScript frontend'e veri geçişini gerçekleştirebilirsiniz.