WebAssembly學習(五):AssemblyScript - Hello World


一、項目創建

1.創建AssemblyScript根目錄

1 mkdir AssemblyScript

 2.安裝AssemblyScript開發依賴

1 cnpm install --save-dev AssemblyScript/assemblyscript

 3.在根目錄下創建ts文件目錄

1 mkdir assembly

4.在assembly目錄下創建ts配置文件tsconfig.json,內容如下

1 {
2   "extends": "../node_modules/assemblyscript/std/assembly.json",
3   "include": [
4     "./**/*.ts"
5   ]
6 }

5.在assembly目錄下創建module.ts文件,內容如下

1 export function add(a: i32, b: i32): i32 {
2   return a + b;
3 }

二、編譯

1.在AssemblyScript根目錄下package.json中添加以下編譯腳本命令

1 "scripts": {
2     "build": "npm run build:untouched && npm run build:optimized",
3     "build:untouched": "asc assembly/module.ts -t module.untouched.wat -b module.untouched.wasm --validate --sourceMap --measure",
4     "build:optimized": "asc assembly/module.ts -t module.optimized.wat -b module.optimized.wasm --validate --sourceMap --measure --optimize"
5    }

2.運行編譯腳本,將assembly/module.ts編譯為module.untouched.wasm二進制文件

1 npm run build

注意:如果構建失敗,則可能需要(此時)npm install --save-dev ts-node

三、使用

1.在AssemblyScript根目錄下創建module.js文件,內容如下,用來加載並實例化.wasm模塊

1 const fs = require("fs");
2 module.exports = new WebAssembly.Instance(new WebAssembly.Module(fs.readFileSync(__dirname + "/module.optimized.wasm"), {})).exports;

2.在AssemblyScript根目錄下創建hello.js文件,內容如下,用來使用module.js導出的模塊

1 var myModule = require("./module.js");
2 console.log(myModule.add(1, 2));

3.運行結果如下

1 E:\Code\AssemblyScript>cmd.exe
2 Microsoft Windows [版本 10.0.17134.590]
3 (c) 2018 Microsoft Corporation。保留所有權利。
4 
5 E:\Code\AssemblyScript>node hello.js
6 3
7 
8 E:\Code\AssemblyScript>

4.最終目錄結構如下

TS為JS類型的超集,AS為TS的子集,其中一些支持的數據類型和限制還有待學習,所以最終只是實現一個簡單的加法運算。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM