토파즈는 소유자와 신뢰 경계가 서로 다른 제품에서 WebAssembly를 사용합니다. 명령을 고르기 전에 제품부터 선택하세요.
1. 플레이그라운드(Playground): 첫 브라우저 실험
CLI를 설치하지 않고 작은 토파즈 프로그램을 편집하고 검사해 실행하려면 사이트 플레이그라운드를 사용합니다. 브라우저는 Worker 안에 컴파일러와 인터프리터 WebAssembly를 불러옵니다. 이는 대화형 소스 실험을 확인할 뿐 배포된 애플리케이션이나 제한 없는 브라우저 접근을 증명하지 않습니다.
설치한 CLI로 같은 실험을 하려면 첫 프로그램에서 시작하세요.
2. Raw Web: 기존 호스트가 토파즈 호출
기존 JavaScript ES 모듈 호스트가 UI를 소유하고 선택한 토파즈 내보내기 함수를 호출한다면 Raw Web을 선택합니다.
topaz build --target web main.tpz --release --out-dir web-product
제품에는 topaz-web.js, topaz-web.d.ts, topaz-web.wasm과 공통 산출물
파일이 들어갑니다. 생성 모듈에서 instantiateTopaz를 가져오고 디렉터리를
HTTP로 제공하세요. 호스트는 생성된 타입 ABI를 따라야 합니다.
3. Worker: 같은 ABI를 메인 스레드 밖에서 사용
기존 호스트가 Raw Web 제품 주위에 생성된 요청·응답 통신 계층도 필요하다면 Worker를 선택합니다.
topaz build main.tpz --target web-worker --release --out-dir worker-product
제품에 topaz-web-worker.js와 topaz-web-worker-client.js가 추가됩니다. UI를
만들거나 권한을 늘리지 않으며 JavaScript 호스트가 계속 둘을 소유합니다.
4. 관리형 Web 애플리케이션: 토파즈가 UI 소유
모델, 메시지, 상태 갱신, 화면과 선언한 브라우저 권한을 토파즈가 소유한다면
web-app을 선택합니다.
topaz init --target web-app --root hello-web
topaz lock --root hello-web
topaz check --root hello-web --locked
topaz test hello-web/tests/app.tpz --root hello-web --locked
topaz dev --root hello-web --port 8000
topaz build --root hello-web --locked --release --out-dir web-app-product
이 패키지 전용 대상은 index.html, 검사된 topaz-app.js 호스트, Raw Web
파일, 권한 메타데이터와 선언한 스타일·자산을 포함한 완전한 정적 제품을
만듭니다. topaz dev는 루프백 전용이며 프로덕션 서버가 아닙니다.
필수 조건과 복구
Raw Web, Worker와 관리형 Web 빌드에는 wasm32-unknown-unknown 대상이 설치된
Rust가 필요합니다. 완성된 브라우저 제품에는 토파즈 CLI나 Rust가 필요하지
않습니다. HTTP로 제공하세요. file://에서 ES 모듈과 WASM을 직접 불러오는
방식은 지원 경로가 아닙니다.
브라우저가 호스트와 런타임 식별자 불일치를 알리면 이전 JavaScript와 새 WASM을 섞지 말고 한 번의 빌드에서 나온 디렉터리 전체를 배포하세요. 관리형 출력 디렉터리가 달라졌다면 보존하고 새 빈 디렉터리에 빌드합니다.