React × WebAssembly 의 동작 샘플을 AssemblyScript 로 간단하게 작성해 본다
AssemblyScript에 대해 자세히 알아보기
직접 시도한 코드는 여기입니다.
create-react-app로 프로젝트 만들기
# reactのプロジェクト作成
yarn create react-app webassembly-in-react
cd webassembly-in-react/
# VSCodeを使っている場合はこれでVSCodeを開き直せる
# code -r webassembly-in-react/
# AssemblyScriptを追加する
yarn add -D AssemblyScript/assemblyscript
# AssemblyScriptの例となるtsファイルの追加、package.jsonにscriptの追加 を自動でやってくれる
yarn asinit .
package.json
package.json
script를 다시 작성하여 AssemblyScript를 빌드하고 react를 빌드하도록 변경합니다.
package.json "scripts": {
"jsstart": "react-scripts start",
"jsbuild": "react-scripts build",
"asbuild": "asc assembly/index.ts -b public/as-api.wasm",
"start": "npm run asbuild && npm run jsstart",
"build": "npm run asbuild && npm run jsbuild"
},
package.json
전체
package.json{
"name": "webassembly-in-react",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "3.0.1"
},
"scripts": {
"jsstart": "react-scripts start",
"jsbuild": "react-scripts build",
"asbuild": "asc assembly/index.ts -b public/as-api.wasm",
"start": "npm run asbuild && npm run jsstart",
"build": "npm run asbuild && npm run jsbuild"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"assemblyscript": "AssemblyScript/assemblyscript"
}
}
assembly/index.ts
yarn asinit .
에서 자동 생성된 assembly/index.ts
에 script를 추가합니다.
※TypeScript가 아닌 AssemblyScript로 작성되었습니다.
assembly/index.tsexport function factorial(value: f64): f64 {
if (value == 0 || value == 1) return 1;
return value * factorial(value - 1);
}
src/와-아피. js
↑의 AssemblyScript를로드하는 로더 만들기
src/wa-api.jsimport {instantiateStreaming} from "assemblyscript/lib/loader";
export default instantiateStreaming(
fetch('./as-api.wasm')
);
src/App.js
React에서 AssemblyScript를 실행하도록 변경
src/App.jsimport React, { useState } from 'react';
import waApi from './wa-api';
function App() {
const [value, setValue] = useState(5);
const [result, setResult] = useState();
return (
<div className="App">
<p>
The factorial of
<input value={value} onChange={evt => setValue(evt.target.value)} />
is {result}
</p>
<button onClick={async () => setResult((await waApi).factorial(value))}>
Calculate
</button>
</div>
);
}
export default App;
이 상태로 빌드합니다.
yarn start
React에서 AssemblyScript를 실행할 수 있었던 훌륭한 튜토리얼이었습니다.
읽어 주셔서 감사합니다. m(_ _)m
Reference
이 문제에 관하여(React × WebAssembly 의 동작 샘플을 AssemblyScript 로 간단하게 작성해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okumurakengo/items/4e97b0d43c1f12331fd3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
# reactのプロジェクト作成
yarn create react-app webassembly-in-react
cd webassembly-in-react/
# VSCodeを使っている場合はこれでVSCodeを開き直せる
# code -r webassembly-in-react/
# AssemblyScriptを追加する
yarn add -D AssemblyScript/assemblyscript
# AssemblyScriptの例となるtsファイルの追加、package.jsonにscriptの追加 を自動でやってくれる
yarn asinit .
package.json
script를 다시 작성하여 AssemblyScript를 빌드하고 react를 빌드하도록 변경합니다.package.json
"scripts": {
"jsstart": "react-scripts start",
"jsbuild": "react-scripts build",
"asbuild": "asc assembly/index.ts -b public/as-api.wasm",
"start": "npm run asbuild && npm run jsstart",
"build": "npm run asbuild && npm run jsbuild"
},
package.json
전체package.json
{
"name": "webassembly-in-react",
"version": "0.1.0",
"private": true,
"dependencies": {
"react": "^16.8.6",
"react-dom": "^16.8.6",
"react-scripts": "3.0.1"
},
"scripts": {
"jsstart": "react-scripts start",
"jsbuild": "react-scripts build",
"asbuild": "asc assembly/index.ts -b public/as-api.wasm",
"start": "npm run asbuild && npm run jsstart",
"build": "npm run asbuild && npm run jsbuild"
},
"eslintConfig": {
"extends": "react-app"
},
"browserslist": {
"production": [
">0.2%",
"not dead",
"not op_mini all"
],
"development": [
"last 1 chrome version",
"last 1 firefox version",
"last 1 safari version"
]
},
"devDependencies": {
"assemblyscript": "AssemblyScript/assemblyscript"
}
}
assembly/index.ts
yarn asinit .
에서 자동 생성된 assembly/index.ts
에 script를 추가합니다.
※TypeScript가 아닌 AssemblyScript로 작성되었습니다.
assembly/index.tsexport function factorial(value: f64): f64 {
if (value == 0 || value == 1) return 1;
return value * factorial(value - 1);
}
src/와-아피. js
↑의 AssemblyScript를로드하는 로더 만들기
src/wa-api.jsimport {instantiateStreaming} from "assemblyscript/lib/loader";
export default instantiateStreaming(
fetch('./as-api.wasm')
);
src/App.js
React에서 AssemblyScript를 실행하도록 변경
src/App.jsimport React, { useState } from 'react';
import waApi from './wa-api';
function App() {
const [value, setValue] = useState(5);
const [result, setResult] = useState();
return (
<div className="App">
<p>
The factorial of
<input value={value} onChange={evt => setValue(evt.target.value)} />
is {result}
</p>
<button onClick={async () => setResult((await waApi).factorial(value))}>
Calculate
</button>
</div>
);
}
export default App;
이 상태로 빌드합니다.
yarn start
React에서 AssemblyScript를 실행할 수 있었던 훌륭한 튜토리얼이었습니다.
읽어 주셔서 감사합니다. m(_ _)m
Reference
이 문제에 관하여(React × WebAssembly 의 동작 샘플을 AssemblyScript 로 간단하게 작성해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okumurakengo/items/4e97b0d43c1f12331fd3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
export function factorial(value: f64): f64 {
if (value == 0 || value == 1) return 1;
return value * factorial(value - 1);
}
↑의 AssemblyScript를로드하는 로더 만들기
src/wa-api.js
import {instantiateStreaming} from "assemblyscript/lib/loader";
export default instantiateStreaming(
fetch('./as-api.wasm')
);
src/App.js
React에서 AssemblyScript를 실행하도록 변경
src/App.jsimport React, { useState } from 'react';
import waApi from './wa-api';
function App() {
const [value, setValue] = useState(5);
const [result, setResult] = useState();
return (
<div className="App">
<p>
The factorial of
<input value={value} onChange={evt => setValue(evt.target.value)} />
is {result}
</p>
<button onClick={async () => setResult((await waApi).factorial(value))}>
Calculate
</button>
</div>
);
}
export default App;
이 상태로 빌드합니다.
yarn start
React에서 AssemblyScript를 실행할 수 있었던 훌륭한 튜토리얼이었습니다.
읽어 주셔서 감사합니다. m(_ _)m
Reference
이 문제에 관하여(React × WebAssembly 의 동작 샘플을 AssemblyScript 로 간단하게 작성해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://qiita.com/okumurakengo/items/4e97b0d43c1f12331fd3
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
import React, { useState } from 'react';
import waApi from './wa-api';
function App() {
const [value, setValue] = useState(5);
const [result, setResult] = useState();
return (
<div className="App">
<p>
The factorial of
<input value={value} onChange={evt => setValue(evt.target.value)} />
is {result}
</p>
<button onClick={async () => setResult((await waApi).factorial(value))}>
Calculate
</button>
</div>
);
}
export default App;
yarn start
Reference
이 문제에 관하여(React × WebAssembly 의 동작 샘플을 AssemblyScript 로 간단하게 작성해 본다), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/okumurakengo/items/4e97b0d43c1f12331fd3텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)