quickjs-emscripten webassembly 包

quickjs-emscripten是基于emscripten将quickjs c 版本,编译为了webassembly 方便通过npm 使用

包含的特性

  • 支持node以及web 使用
  • 安全的执行js (支持到es2020)
  • quickjs runtime 进行创建以及维护值
  • 暴露主机函数到quickjs runtime
  • 通过asyncify 支持执行异步代码

参考使用

  • app.mjs
import { getQuickJS } from "quickjs-emscripten"
 
async function main() {
  const QuickJS = await getQuickJS()
  const vm = QuickJS.newContext()
 
  const world = vm.newString("world")
  vm.setProp(vm.global, "NAME", world)
  world.dispose()
 
  const result = vm.evalCode(`"Hello " + NAME + "!"`)
  if (result.error) {
    console.log("Execution failed:", vm.dump(result.error))
    result.error.dispose()
  } else {
    console.log("Success:", vm.dump(result.value))
    result.value.dispose()
  }
 
  vm.dispose()
}
 
main()
  • 运行效果

说明

因为quickjs webassembly 是基于了emscripten ,所以使用的时候需要注意资源释放,同时从上边代码也可以看出需要随时进行相关资源的释放

参考资料

https://github.com/justjake/quickjs-emscripten
https://www.npmjs.com/package/quickjs-emscripten

posted on 2024-02-02 09:28  荣锋亮  阅读(71)  评论(0编辑  收藏  举报

导航