Dev

Tauri 체험

Joo 2023. 10. 15. 23:19

Rust 좋다좋다 이야기만 들었지 써볼 기회가 없었는데 electron이랑 비슷한 느낌으로 개발이 가능한게 있다고 해서 체험을 해보았다. 이름은 tauri 다.

설치는 하라는대로 하면 되긴했는데 아무래도 ubuntu에서 하다보니 한방에 설치가 되지는 않았다. gtk관련해서 라이브러리 설치가 필요한게 몇개 필요했다. 설치과정에서 필요한 라이브러리를 확인하고 알아서 설치해주는 그런 친절함은 없었다. 어쨌든 설치해서 실행하면 요런 sample UI를 보여준다.

코드 구조는 UI와 앱으로 나뉘어 있다. src에는 UI 관련코드, src-tauri 에는 앱을 관리하는 rust 코드가 들어있다. electron이 main process, renderer process로 나뉘어있는 것과 비슷하다. ui도 rust로 만들수 있다고는 하는데 일단 웹이다. rust로 웹UI, 그러니까 webgl 같은걸로 사용하는 것이다.

잠시 코드를 살펴보니 rust로는 tauri command를 handler로 등록하고..

#[tauri::command]
fn hello(name: &str) -> String {
    format!("Hello, {}!", name)
}

tauri::Builder::default()
        .invoke_handler(tauri::generate_handler![hello])

javascript로는 이걸 invoke라는 것으로 사용하는 방식이다. electron에서는 어떻게 했더라 ;;; 까먹었는데 event를 주고받는 방식이었던 것 같은데 어쨌든 여긴 이렇게 한다.

const { invoke } = window.__TAURI__.tauri;

let greetInputEl;
let greetMsgEl;

async function hello() {
  greetMsgEl.textContent = await invoke("hello", {
    name: greetInputEl.value
  })
}

뭘 더 해보고 싶어도 rust를 아직 모르는 상태라 뭘 더 해볼 수가 없다. 그래서 체험은 일단 여기서 끝!

아! 결국 UI는 브라우저와 같은 상태인 것이라서 확인해보니 Chromium이나 Chrome은 아니고 Webkit 자체를 가져다쓴다. 그래서 뭔가 safari 느낌이 난다. 진짜 체험 끝. 담에 기운이 또 생기면 더 파봐야지.

반응형