1 个不稳定版本
0.19.0 | 2024年7月11日 |
---|
#94 在 编程语言 中排名
13,139 每月下载量
在 12 个crate(2个直接) 中使用
110KB
2.5K SLoC
Boa
这是一个用Rust编写的实验性JavaScript词法分析器、解析器和解释器。目前,它支持该语言的一些特性。
在线演示(WASM)
现在就来尝试这个WASM在线沙盒吧!点击这里!
喜欢命令行?随时可以尝试boa_cli
!
Boa Crates
Boa目前发布并积极维护以下crate
boa_ast
- Boa的ECMAScript抽象语法树boa_cli
- Boa的CLI和REPL实现boa_engine
- Boa的ECMAScript内置对象和执行实现boa_gc
- Boa的垃圾回收器boa_interner
- Boa的字符串池boa_parser
- Boa的词法分析和解析器boa_profiler
- Boa的代码分析器boa_icu_provider
- Boa的ICU4X数据提供者boa_runtime
- Boa的WebAPI功能boa_string
- Boa的ECMAScript字符串实现。
请注意:`Boa
` 和 `boa_unicode
` crate已被弃用。
Boa Engine 示例
要使用`Boa
`,请按照以下步骤操作。
将以下依赖项添加到您的`Cargo.toml
`中
[dependencies]
boa_engine = "0.19.0"
然后在`main.rs
`中,复制以下内容
use boa_engine::{Context, Source, JsResult};
fn main() -> JsResult<()> {
let js_code = r#"
let two = 1 + 1;
let definitely_not_four = two + "2";
definitely_not_four
"#;
// Instantiate the execution context
let mut context = Context::default();
// Parse the source code
let result = context.eval(Source::from_bytes(js_code))?;
println!("{}", result.display());
Ok(())
}
现在,剩下的就是执行以下命令:
恭喜!您已成功使用 Boa
执行了您的第一个 JavaScript
代码!
文档
有关 Boa
API 的更多信息,请查阅我们的文档。
一致性
要了解 Boa 覆盖了 ECMAScript 规范的多少,您可以在此处查看运行 ECMASCript Test262 测试套件的结果:这里。
贡献
请查阅 CONTRIBUTING.md 文件,了解如何在项目中贡献。您需要安装 Rust 并配置一个编辑器。我们为 VSCode 准备了一些配置。
调试
有关调试的更多信息,请参阅 debugging.md。
Web Assembly
此解释器可以暴露给 JavaScript!您可以使用以下命令在本地构建示例:
npm run build
在控制台中,您可以使用 window.evaluate
将 JavaScript 传递进去。要开发 Web Assembly 端,您可以运行
npm run serve
然后转到 https://127.0.0.1:8080
。
使用方法
- 克隆此仓库。
- 在项目根目录中,使用
cargo run -- test.js
运行(其中test.js
是指向包含任何有效 JavaScript 代码的现有 JS 文件的路径)。 - 如果任何 JS 代码不工作,那么它是一个错误。请提交一个 问题!
示例
命令行选项
Usage: boa [OPTIONS] [FILE]...
Arguments:
[FILE]... The JavaScript file(s) to be evaluated
Options:
--strict Run in strict mode
-a, --dump-ast [<FORMAT>] Dump the AST to stdout with the given format [possible values: debug, json, json-pretty]
-t, --trace Dump the AST to stdout with the given format
--vi Use vi mode in the REPL
-O, --optimize
--optimizer-statistics
--flowgraph [<FORMAT>] Generate instruction flowgraph. Default is Graphviz [possible values: graphviz, mermaid]
--flowgraph-direction <FORMAT> Specifies the direction of the flowgraph. Default is top-top-bottom [possible values: top-to-bottom, bottom-to-top, left-to-right, right-to-left]
--debug-object Inject debugging object `$boa`
-m, --module Treats the input files as modules
-r, --root <ROOT> Root path from where the module resolver will try to load the modules [default: .]
-h, --help Print help (see more with '--help')
-V, --version Print version
路线图
请参阅 里程碑。
基准测试
请参阅 基准测试。
性能分析
请参阅 性能分析。
变更日志
请参阅 CHANGELOG.md。
沟通
如果您有任何问题,请随时通过 Matrix 联系我们。如果您有兴趣贡献,贡献讨论发生在同一个 Matrix Space。我们还有一个 Discord 用于任何问题或问题。
许可证
依赖
~210KB