• WebAssembly学习(五):AssemblyScript


    一、项目创建

    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:CodeAssemblyScript>cmd.exe
    2 Microsoft Windows [版本 10.0.17134.590]
    3 (c) 2018 Microsoft Corporation。保留所有权利。
    4 
    5 E:CodeAssemblyScript>node hello.js
    6 3
    7 
    8 E:CodeAssemblyScript>

    4.最终目录结构如下

    TS为JS类型的超集,AS为TS的子集,其中一些支持的数据类型和限制还有待学习,所以最终只是实现一个简单的加法运算。

  • 相关阅读:
    博客园
    未释放的已删除文件
    ssh连接缓慢
    剑指 Offer 38. 字符串的排列
    剑指 Offer 37. 序列化二叉树
    剑指 Offer 50. 第一个只出现一次的字符
    剑指 Offer 36. 二叉搜索树与双向链表
    剑指 Offer 35. 复杂链表的复制
    剑指 Offer 34. 二叉树中和为某一值的路径
    剑指 Offer 33. 二叉搜索树的后序遍历序列
  • 原文地址:https://www.cnblogs.com/jixiaohua/p/10441015.html
Copyright © 2020-2023  润新知