4 个版本
0.6.3 | 2024年7月7日 |
---|---|
0.6.2 | 2024年7月2日 |
0.6.1 | 2024年6月30日 |
0.6.0 | 2024年6月19日 |
#1371 in 网页编程
每月 21 次下载
在 5 个 Crates 中使用(通过 hai_runtime)
3MB
90K SLoC
QuickJS 是由 Fabrice Bellard 和 Charlie Gordon 开发的一个小型且可嵌入的 JavaScript 引擎。它支持包括模块、异步生成器、代理和 BigInt 在内的 ES2023 规范。
Quickjs-NG 是 QuickJS 最活跃的分支之一,并由一个专注于重燃项目的社区维护。
此 crate 允许您轻松访问和使用 QuickJS 的所有功能。它还提供了强大的 Rust-JS 类型转换和互操作性能力。
快速入门
[dependencies]
quickjs-rusty = "0.6.3"
use quickjs_rusty::{Context, JsValue};
let context = Context::new().unwrap();
// Eval.
let value = context.eval("1 + 2").unwrap();
assert_eq!(value, JsValue::Int(3));
let value = context.eval_as::<String>(" var x = 100 + 250; x.toString() ").unwrap();
assert_eq!(&value, "350");
// Callbacks.
context.add_callback("myCallback", |a: i32, b: i32| a + b).unwrap();
context.eval(r#"
// x will equal 30
var x = myCallback(10, 20);
"#).unwrap();
注意:此项目源自 quickjs-rs,但已进行了重大重构。与原始项目相比,它具有完全不同的代码结构和功能设计。
可选功能
此 crate 支持以下功能
serde
: (默认启用)。 启用 serde 方法from_js
和to_js
,以在 QuickJS 上下文中在 Rust 类型之间进行转换。它应与serde_json
兼容,但尚未测试。更多信息请参阅 示例。chrono
: (默认启用)。 chrono 集成- 添加了一个
JsValue::Date
变体,可以将其(反)序列化为 JSDate
- 添加了一个
bigint
: (默认启用)。 通过 num-bigint 提供任意精度整数支持
安装
默认情况下,quickjs 与 libquickjs-sys
crate 集成,并自动编译,前提是你有适当的依赖项。
Windows 支持
quickjspp-rs 可以在目标 x86_64-pc-windows-msvc
下使用
系统安装
要使用系统安装(不包含集成功能),首先安装所需的依赖项,然后编译和安装 quickjspp。
然后您需要禁用 bundled
功能,以强制使用系统版本。
依赖项
~1.4–2.4MB
~44K SLoC