💡
原文英文,约800词,阅读约需3分钟。
📝
内容提要
QJS是一个无CGO的现代JavaScript运行时,嵌入QuickJS引擎,支持Go开发者在Go进程中运行ES2023环境的JavaScript。它提供安全的执行模型,支持async/await,无需C库依赖,适合需要安全插件系统和用户脚本的开发者。
🎯
关键要点
- QJS是一个无CGO的现代JavaScript运行时,嵌入QuickJS引擎,支持Go开发者在Go进程中运行ES2023环境的JavaScript。
- QJS提供安全的执行模型,支持async/await,无需C库依赖,适合需要安全插件系统和用户脚本的开发者。
- QJS支持完整的ES2023特性,包括模块、async/await和BigInt等。
- QJS与Go 1.22+兼容,并作为常规Go模块分发。
- QJS提供Runtime和Context API,允许Go代码评估JavaScript、绑定函数和交换数据结构。
- Go函数可以暴露给JavaScript,JavaScript函数可以转换回类型化的Go可调用函数。
- QJS引入Proxy,轻量级JavaScript包装器,仅持有Go值的引用,避免重复序列化大型或不透明的Go对象。
- QJS支持async/await,允许Go异步解析JavaScript Promise。
- QJS可以用于实现JavaScript中的HTTP处理程序,同时保持服务器在Go中。
- Pool类型管理多个运行时以处理并发工作负载,示例展示了工作goroutine借用运行时、执行JS并返回池中。
- 由于QuickJS在Wazero内部运行,QJS默认提供文件系统和网络隔离,用户需显式配置以暴露额外功能。
- 根据基准测试,QJS在内存使用和执行时间上与Goja和ModerncQuickJS相比具有竞争力。
- QJS旨在满足需要安全插件系统、用户提供脚本或嵌入JavaScript业务逻辑的Go开发者。
🏷️