跳到主要内容

ArenaLess-Bunder的特性

ArenaLess使用ArenaLess-Bundler项目作为构建工具。开源链接

介绍

ArenaLess-Bundler是一个基于Rollup的构建工具,可以直接在前端网页运行,为ArenaLess的使用进行优化,而且加了一些特性。

有哪些特性?

1. 网络导入(独有)

如果你用过deno,你会发现十分的熟悉。在ArenaLess中,你可以从URL或者xxx:yyyy@...中导入模块。

import JSON5 from "npm:json5";
import JSON5 from "https://esm.sh/json5";

目前支持的前缀如下:

  • npm:... -> https://esm.sh/...
  • jsr:... -> https://esm.sh/jsr/...
  • http:https:

2. 虚拟的文件系统

为了实现在web环境可以打包构建,ArenaLess提供了一个虚拟文件系统。

3. 导入本地模块的特殊后缀(独有)

目前此功能只能支持本地模块,在线的模块用不了。

?binary 二进制导入

导入一个Uint8Array形式的二进制文件。

import xxx from "xxx?binary";

?text 文本导入

导入一个string形式的文本文件。

import xxx from "xxx?text";

?base64 base64导入

base64string导入一个文件。

import xxx from "xxx?base64";

?wasm 导入wasm实例

导入一个Promise<WebAssembly.Instance>形式的wasm文件。

这个相关的东西你可以到ArenaLess-Bundler仓库的examples/wasm-hello-world查看

import hellowasm from "hellowasm.wasm?wasm";
hellowasm().then((instance:WebAssembly.Instance)=>{
console.log(instance.exports.add(1,100));
})

4. 默认的JSON格式导入(AP兼容)

ArenaLess默认支持JSON的导入,你可以直接导入一个JSON文件。

// xxx.json
{"yyy":100,"zzz":"hello"}
import xxx from "xxx.json";
console.log(xxx.yyy);