Android 接入 QuickJS(三)- QuickJS 常用 API

本文详细介绍了在 Android 开发中如何利用 QuickJS 引擎执行 JavaScript 脚本,创建 JSRuntime 和 JSContext,增加自定义变量,以及导入自定义模块的方法。通过实例代码解析了 QuickJS 的常用 API,为读者提供了深入理解 QuickJS 的基础。
摘要由CSDN通过智能技术生成

引言

我们接入 QuickJS 引擎主要目的是为了给我们的应用增加支持 JS 的能力。而 JS 的能力构成则离不开引擎提供的各种 API 的支持,本文将主要介绍几种常见的 API 使用方式。

相关文章

Android接入QuickJS(一)

Android接入QuickJS(二)

API 浅析

QuickJS 引擎提供的 API 主要定义在 quickjs.h 中,下面我们结合源码中 example point.c 的代码进行逐个讲解。

首先解释下 example 中的 point.c 是定义了一个 module ,在这里我们通过命令编译 point.c 之后再次执行我们的 JavaScript 脚本时导入这个模块就可以用到这个模块能力。

下面将带着问题去看看我们如何使用 QuickJS 提供的 API 去解决,问题是递进提出,解决问题时需要用到的 API 也会越来越多。

一:如何在 C/C++ 代码中执行一个脚本

试想以下这么一个场景,我要用 QuickJS 引擎执行一段脚本,那么标准流程应该是怎样的呢?

首先要了解在 QuickJS 引擎的定义中,每个 JS 脚本的执行都离不开其运行时环境 JSRuntime ,因此为了执行这个脚本我们需要创建一个 JSRuntime 为后续执行脚本提供环境。

JSRuntime *rt = JS_NewRuntime();

提供环境后还无法执行脚本,要想执行脚本还需要根据 JSRuntime 去构建出脚本需要执行的 JSContext ,这个才是每个脚本最终得以运行的最终环境,同时每个 JSContext 都有一个运行时环境,在这个 JSContext 中我们可以为每个脚本定制不同的扩展等。

JSContext *ctx = JS_NewContext(rt);

准备好 JSContext 后就可以执行脚本了,此时不同于前一篇文章所使用的 JS_EvalFunction 在这里我们要使用 JS_Eval 方法去执行我们的脚本。这两者的区别后面在解答࿰

  • 22
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值