C.W.K.
Stream
Lesson 04 of 06 · published

Window vs Webview: 2.0의 분리

~12 min · tauri, tauri-2, windows, webview

Level 0웹 관광객
0 XP0/56 lessons0/13 achievements
0/100 XP to next level100 XP to go0% complete
"창은 액자야. 웹뷰는 그 안에 그려지는 거고. Tauri 2가 드디어 둘을 따로 떼어놨어."

예전엔 한 몸이던 개념 둘

Tauri 1에선 '창'이랑 그 안의 웹 콘텐츠가 사실상 한 객체였어. Tauri 2는 그 둘을 쪼갰지, 진짜 앱은 가끔 이 구분이 필요하거든:

  • Window는 네이티브 OS 액자야 — 타이틀바, 테두리, 위치, 크기, 작업표시줄에 뜨는 그것. Tauri는 TAO라는 라이브러리로 창을 만들어.
  • Webview는 네 HTML을 칠하는 렌더링 표면이야. Tauri는 WRY라는 라이브러리로 웹뷰를 굴려.

Tauri 2에선 창 하나가 웹뷰 여러 개를 품을 수 있어(진짜로 분리된 웹 컨텍스트인 split pane 떠올려). 아니면 창 하나에 웹뷰 하나를 묶어주는 일상용 편의 타입을 써도 되고.

95% 쓰게 될 타입

그 편의 타입이 WebviewWindow야 — 창 하나, 웹뷰 하나, 같이 생성. 독립 웹 패널 들어가는 타일링 에디터 같은 희한한 거 만드는 게 아니면 WebviewWindow를 꺼내 쓰고, 이 퀘스트 나머지도 대부분 이걸 써. 더 깊은 분리(창당 웹뷰 여러 개)는 필요할 때 거기 있어 — 평범한 앱 만드는데 복잡함으로 끌려들어가지 않아.

지금 알아둬야 하는 이유

분리를 알아두면 나중에 헷갈리는 하루를 면해. Tauri 2 문서 읽다가 WindowWebviewWindow API가 둘 다 보일 때, 뭐가 뭔지 알게 돼 — Window는 맨 액자, WebviewWindow는 액자+콘텐츠. windows 트랙이 이 토대 위에 진짜 멀티윈도우 UI를 세워. 이 레슨은 그냥 용어에 안 걸려 넘어지라고 있는 거야.

Code

WebviewWindow — 액자랑 콘텐츠를 한 호출에·rust
// 일상용 타입: 창 하나 + 웹뷰 하나, 같이 생성.
// (제대로 된 창 작업은 `windows` 트랙에 있어 — 여긴 맛보기야.)
use tauri::WebviewWindowBuilder;
use tauri::WebviewUrl;

tauri::Builder::default()
    .setup(|app| {
        WebviewWindowBuilder::new(app, "main", WebviewUrl::default())
            .title("My App")
            .inner_size(1000.0, 700.0)
            .build()?;
        Ok(())
    });

External links

Exercise

네 말로 답해봐, 훔쳐보기 없이: (1) UI의 다른 라우트를 보여주는 두 번째 앱 창을 원하면 새 Window가 필요해, 새 Webview야, 새 WebviewWindow야? (2) 창 '하나' 안에 웹뷰 둘을 원하는 건 언제일까? 두 번째에 대해 한 줄짜리 사용 사례를 써봐.
Hint
(1)은 액자+콘텐츠를 통째로 새로 원하니까 편의 타입이야. (2)는 독립된 웹 페이지 둘이 OS 액자 하나 안에 나란히 있어야 하는 레이아웃 — 듀얼 패널 미리보기 같은 거 떠올려.

Progress

Progress is local-only — sign in to sync across devices.
이 페이지에서 버그를 발견하셨거나 피드백이 있으세요?문제 신고

댓글 0

🔔 답글 알림 (로그인 필요)
로그인댓글을 남기려면 로그인해 주세요.

아직 댓글이 없어요. 첫 댓글을 남겨보세요.