JS 는 WebAssembly 가 컴 파일 한 wasm 파일 을 어떻게 호출 합 니까?
3510 단어 jsWebAssembly
주로 js 에서 어떻게 호출 하여 실행 하 는 지 알려 주 는 것 입 니 다.제 가 전에 WebAssembly API 를 봤 을 때 어 리 석 은 표정 을 지 었 습 니 다.
여러분 들 을 위해 서 새로운 기술 을 빨리 구 할 수 있 도록 하 겠 습 니 다.
여기에 쓰 인 dom 은 공식 적 으로 추천 하 는 c/c++컴 파일 된 것 입 니 다.
c 코드
int add (int x, int y) {
return x + y;
}
int square (int x) {
return x * x;
}
속성 c 하지만 바이트 코드 에 익숙 하지 않 은 친 구 는 이해 하지 못 할 수도 있 습 니 다.왜 main 함수 가 없 습 니까?여 기 는 주로 이 c 코드 를 하나의 모듈 로 호출 하여 스스로 실행 할 필요 가 없 기 때문에 없습니다.공식 적 으로 도 main 함수 가 있 으 면 js 와 html 를 직접 생 성 할 수 있 지만 너무 온화 합 니 다.
이런 방식 은 비교적 추천 하 는 동시에 js 가 직접 호출 할 수 있 도록 하 는 것 이 비교적 편리 하 다.
이후 emscripten 을 사용 하여 emcc math.c-os-s WASM=1-s SIDE 컴 파일MODULE=1 -o math.wasm
그리고 math.wasm 파일 이 있 습 니 다.emscripten 을 설치 하지 않 았 다 면 제 블 로그 에 설치 에 관 한 것 이 있 습 니 다.
math.wasm 파일 이 있 으 면 js 로 호출 해 야 합 니 다.
새 math.html 호출 방법 은 다음 과 같 습 니 다.
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta http-equiv="X-UA-Compatible" content="ie=edge">
<title>Document</title>
</head>
<body>
<h1>
</h1>
<script>
/**
* @param {String} path wasm
* @param {Object} imports wasm
*/
function loadWebAssembly (path, imports = {}) {
return fetch(path) //
.then(response => response.arrayBuffer()) // ArrayBuffer
.then(buffer => WebAssembly.compile(buffer))
.then(module => {
imports.env = imports.env || {}
//
imports.env.memoryBase = imports.env.memoryBase || 0
if (!imports.env.memory) {
imports.env.memory = new WebAssembly.Memory({ initial: 256 })
}
//
imports.env.tableBase = imports.env.tableBase || 0
if (!imports.env.table) {
// MVP element "anyfunc"
imports.env.table = new WebAssembly.Table({ initial: 0, element: 'anyfunc' })
}
// WebAssembly
return new WebAssembly.Instance(module, imports)
})
}
//
loadWebAssembly('./math.wasm')
.then(instance => {
const add = instance.exports._add// c
const square = instance.exports._square// c
console.log('10 + 20 =', add(10, 20))
console.log('3*3 =', square(3))
console.log('(2 + 5)*2 =', square(add(2 + 5)))
})
</script>
</body>
</html>
내 가 있 는 이곳 의 경 로 는 math.html 와 math.wasm 이 동급 이다.브 라 우 저 를 열 어 볼 수 있 습 니 다.하지만 fetch 방법 은 로 컬 에서 사용 할 수 없습니다.네트워크 요청 입 니 다.웹 서버 가 필요 합 니 다.
터미널 사 이 를 열 고 입력 하 십시오
npm install -g serve
웹 서버 다운로드그리고 serve.시동
좀..
시작 완료 효과:
그리고 웹 서버 에 접근 하면 c 방법 을 호출 한 후의 계산 결 과 를 볼 수 있 습 니 다.
웹 어 셈 블 리 가 컴 파일 한 wasm 파일 js 가 어떻게 호출 되 는 지 에 관 한 이 글 은 여기까지 소개 되 었 습 니 다.더 많은 관련 js 호출.wasm 파일 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 찾 아 보 세 요.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.