# AssemblyScript
WebAssembly
是浏览器的低级语言,为开发人员提供了除 JavaScript
之外的 Web
编译目标。它使网站代码可以在安全的沙盒环境中以接近本机的速度运行。
AssemblyScript
是一个把 TypeScript
转换到 WebAssembly
的编译器。由微软开发的 TypeScript
将类型添加到了 JavaScript
中。它已经变得相当受欢迎,即使对于不熟悉它的人,AssemblyScript
只允许 TypeScript
的有限功能子集,因此不需要花太多时间就可以上手。。
因为它与 JavaScript
非常相似,所以 AssemblyScript
使 Web
开发人员可以轻松地将 WebAssembly
整合到他们的网站中,而不必使用完全不同的语言。
mkdir assemblyscript-demo
cd assemblyscript-demo
# 可能需要翻墙
yarn add github:AssemblyScript/assemblyscript
1
2
3
4
2
3
4
使用 asinit
命令生成脚手架文件:
npx asinit .
1
我们的 package.json
现在应该包含以下脚本:
{
"scripts": {
"asbuild:untouched": "asc assembly/index.ts -b build/untouched.wasm -t build/untouched.wat --sourceMap --validate --debug",
"asbuild:optimized": "asc assembly/index.ts -b build/optimized.wasm -t build/optimized.wat --sourceMap --validate --optimize",
"asbuild": "npm run asbuild:untouched && npm run asbuild:optimized"
}
}
1
2
3
4
5
6
7
2
3
4
5
6
7
assembly
目录中包含我们的 AssemblyScript
源代码。生成的示例是一个简单的加法函数。
export function add(a: i32, b: i32): i32 {
return a + b;
}
1
2
3
2
3
yarn asbuild
1
build 目录现在应包含以下文件:
optimized.wasm
optimized.wasm.map
optimized.wat
untouched.wasm
untouched.wasm.map
untouched.wat
1
2
3
4
5
6
2
3
4
5
6
我们得到了构建的普通版本和优化版本。对于每个构建版本,都有一个 .wasm
二进制文件,一个 .wasm.map
源码映射,以及二进制文件的 .wat
文本表示形式。
# 其他
查阅之前的文章:https://wolfx.cn/2018/01/31/webassembly-bootstrap/ (opens new window)