zoukankan      html  css  js  c++  java
  • 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的子集,其中一些支持的数据类型和限制还有待学习,所以最终只是实现一个简单的加法运算。

  • 相关阅读:
    汕头市队赛 SRM1X T1
    夏令营
    路上路径求和
    USACO 刷题记录bzoj
    整除
    Xor路
    超低延时安防直播系统webrtc-client在浏览器播放没有音频的问题如何排查解决?
    如何使用TSINGSEE青犀视频同屏功能组件EasyScreenLive通过sdk推流到腾讯云直播?
    网络穿透/云端组网/视频拉转推服务EasyNTS上云网关运维中数据库检测功能的介绍
    【解决方案】变电站智慧消防如何实现远程集中监控?EasyCVR变电站安全综合管理系统搭建
  • 原文地址:https://www.cnblogs.com/jixiaohua/p/10441015.html
Copyright © 2011-2022 走看看