码迷,mamicode.com
首页 > Web开发 > 详细

WebAssembly学习(五):AssemblyScript - Hello World

时间:2019-02-27 01:00:49      阅读:317      评论:0      收藏:0      [点我收藏+]

标签:soft   col   build   span   png   技术   win   inf   export   

一、项目创建

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

WebAssembly学习(五):AssemblyScript - Hello World

标签:soft   col   build   span   png   技术   win   inf   export   

原文地址:https://www.cnblogs.com/jixiaohua/p/10441015.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!