티스토리 뷰
728x90
반응형
<script type="module">
import init from "./pkg/bulid.js";
const runWasm = async () => {
// Instantiate our wasm module
const bulid = await init("./pkg/bulid_bg.wasm");
console.log(bulid)
};
runWasm();
<script type="module">
import init from "./pkg/bulid.js";
const runWasm = async () => {
// Instantiate our wasm module
const bulid = await init("./pkg/bulid_bg.wasm");
console.log(bulid)
};
runWasm();
rust를 웹 어셈블리로 빌드하는데에는 다양한 방법이 있다.
lib.rs
extern crate wasm_bindgen;
use wasm_bindgen::prelude::*;
#[wasm_bindgen]
extern {
pub fn alert(s: &str);
}
#[wasm_bindgen(start)]
pub fn greet() {
alert("Hello World".into());
}
모든 시작은 헬로우 월드가 국룰이다.
해당 러스트 파일은 Hello World를 해당 스크립트가 로드되면 바로 실행되게 하는 구문이다.
우선 빌드 방법 중 가장 기본적인.
wasm-pack build --target web
를 입력하여 빌드를 해보자
대충 해석해보자면 보면 알겠지만 wasm-pack으로 빌드하며 타겟은 웹이란 뜻이다.
해당 방법으로 빌드 하게되면
<script type="module">
import init from "./pkg/bulid.js";
const runWasm = async () => {
const bulid = await init("./pkg/bulid_bg.wasm");
};
runWasm();
</script>
로 호출 할 수 있다.
ES6의 문법중 하나인 모듈로 불러오는 방법이다.
우선 러스트로 빌드하는 경우 pkg폴더 내에 관련 파일들이 생성되는데 bulid.js를 불러 온다.
뜻에서도 알 수 있겠지만 자동적으로 빌드가 된 wasm에서는 init함수는 기본적으로 포함되어있으며 해당 함수를 실행하여야 정상적으로 실행된다.
웹어셈블리를 활용하는데 ES6 문법이 어색한 사람은 없겠지만
모듈을 활용하지 않고도 호출할수 있다.
wasm-pack build --target no-modules
모듈없이 빌드하는 방법이다.
<script src="./pkg/bulid.js"></script>;
<script>
const { greet } = wasm_bindgen;
let m;
async function runWasm() {
m = await wasm_bindgen('./pkg/bulid_bg.wasm');
}
runWasm();
</script>
다만 위의 방법으로 빌드 할 시 웹어셈블리내에서 웹어셈블리가 아닌 외부의 스크립트들의 함수를 불러내 사용할 수 없다.
그외에도 nodejs에서도 빌드 할 수 있는 방법이 있으며
모든 기기에 호환되게 빌드 할 수 있는 방법도 있다.
추후에 소개하겠다.
728x90
'프로그래밍 > 자바스크립트' 카테고리의 다른 글
웹어셈블리와 FFmpeg 2 (0) | 2020.12.27 |
---|---|
웹어셈블리와 FFMpeg (0) | 2020.12.26 |
IFrame YOUTUBE API를 활용한 custom player 개발 2편 (0) | 2020.12.23 |
IFrame YOUTUBE API를 활용한 custom player 개발 1편 (0) | 2020.12.23 |
클라이언트(사용자)쪽에서 비디오 썸네일 뽑기 (0) | 2020.12.22 |
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 마크다운
- KBL
- contributer
- #팀별 분석
- JavaScript
- Rust
- vtie
- #그래프
- youtube
- #useState 특징
- 그래프
- 무관의 왕
- contributor
- iframe
- webassembly
- 웹어셈블리
- 배포
- API
- 팀별 분석
- HWP
- ffmpeg
- 노력만 가상한 글
- craco
- vscode
- 7위를 하는 이유
- #노력만 가상한 글
- 티스토리API
- #useState
- WASM
- #업데이트가 이상하게 될떄
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | |||
5 | 6 | 7 | 8 | 9 | 10 | 11 |
12 | 13 | 14 | 15 | 16 | 17 | 18 |
19 | 20 | 21 | 22 | 23 | 24 | 25 |
26 | 27 | 28 | 29 | 30 | 31 |
글 보관함