# 入门

为您的第一个 AssemblyScript 模块铺平道路。

# 设置新项目

确保您已安装了 最新版本的 Node.js (在新窗口中打开) 及其包管理器 npm(随 Node.js 提供),然后切换到新目录并像往常一样初始化新的 Node.js 模块

npm init

安装 AssemblyScript 编译器。假设它在生产环境中不需要,并将其设为开发依赖项

npm install --save-dev assemblyscript

安装完成后,编译器提供了一个方便的脚手架工具,可以快速设置新项目,在这里使用当前目录

npx asinit .

asinit 命令会自动创建推荐的目录结构和配置文件

  ./assembly
  Directory holding the AssemblyScript sources being compiled to WebAssembly.

  ./assembly/tsconfig.json
  TypeScript configuration inheriting recommended AssemblyScript settings.

  ./assembly/index.ts
  Example entry file being compiled to WebAssembly to get you started.

  ./build
  Build artifact directory where compiled WebAssembly files are stored.

  ./build/.gitignore
  Git configuration that excludes compiled binaries from source control.

  ./asconfig.json
  Configuration file defining both a 'debug' and a 'release' target.

  ./package.json
  Package info containing the necessary commands to compile to WebAssembly.

  ./tests/index.js
  Starter test to check that the module is functioning.

  ./index.html
  Starter HTML file that loads the module in a browser.

为了完整起见,asinit 支持以下选项

Sets up a new AssemblyScript project or updates an existing one.

SYNTAX
  asinit directory [options]

EXAMPLES
  asinit .
  asinit ./newProject -y

OPTIONS
  --help, -h            Prints this help message.
  --yes, -y             Answers all questions with their default option
                        for non-interactive usage.

# 使用您的模块

现在可以通过调用构建命令将 assembly/index.ts 中的示例编译为 WebAssembly

npm run asbuild

这样做会将编译后的二进制文件、绑定文件和定义文件输出到 build/ 目录。

可以使用以下命令执行 tests/index.js 中生成的测试用例

npm test

构建完成后,该目录包含所有可以像任何其他现代 Node.js ESM 模块一样使用该模块的片段

import * as myModule from "myModule";

生成的 index.html 显示了如何在 Web 上使用该模块。可以使用以下命令启动一个 Web 服务器,它会提供模块目录,并默认显示 index.html

npm start

请注意,并非所有文件都可能需要,具体取决于用例,可以安全地删除不需要的文件。如果出现任何问题,可以再次执行 asinit,这将恢复已删除的默认文件,同时保留已编辑的文件。

# 未来的旅程

到目前为止,一切顺利!现在该开始编辑项目了,这通常涉及

  • assembly/ 目录中编辑和添加源文件,并在 tests/ 中更新测试。

  • asconfig.json 中微调 编译器选项 以满足您项目的需要。

  • 意识到 WebAssembly 还有很长的路要走 🙂

但这只是快速入门。继续阅读以 了解更多