Files
2026-02-02 12:48:25 +08:00
..
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00
2026-02-02 12:48:25 +08:00

yps-quickjs

QuickJS JavaScript 引擎的跨平台静态/动态库封装,用于集成到 GUI 项目中。

概述

ypqjs 是基于 QuickJS-ng 的轻量级 JavaScript 引擎库,支持 Windows 和 Linux 平台。

特性

  • 跨平台支持Windows/Linux
  • 可编译为静态库或动态库
  • 包含标准 C 库扩展(可选)
  • C11 标准
  • 完整的 ECMAScript 支持

构建

前置要求

  • CMake 3.10 或更高版本
  • C 编译器(支持 C11GCC、Clang、MSVC 等

Windows 构建

cd yps-quickjs
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build . --config Release

Linux 构建

cd yps-quickjs
mkdir build
cd build
cmake .. -DCMAKE_BUILD_TYPE=Release
cmake --build .

构建选项

  • YPQJS_BUILD_SHARED_LIBS=ON - 构建动态库(默认:静态库)
  • YPQJS_ENABLE_LIBC=ON - 启用标准 C 库扩展(默认:启用)

示例:

cmake .. -DYPQJS_BUILD_SHARED_LIBS=ON -DYPQJS_ENABLE_LIBC=ON

Debug 构建

cmake .. -DCMAKE_BUILD_TYPE=Debug

集成到你的项目

使用 CMake

在你的项目的 CMakeLists.txt 中添加:

# 查找 yps-quickjs
find_package(ypqjs REQUIRED)

# 链接到你的目标
target_link_libraries(your_target PRIVATE ypqjs)

# 如果需要标准 C 库扩展
target_compile_definitions(your_target PRIVATE YPQJS_ENABLE_LIBC)

使用静态库

# 直接包含源码
add_subdirectory(path/to/yps-quickjs)

# 链接
target_link_libraries(your_target PRIVATE ypqjs)

使用动态库

安装后:

find_package(ypqjs REQUIRED)
target_link_libraries(your_target PRIVATE ypqjs)

API 使用示例

#include "quickjs.h"
#include "quickjs-libc.h"

int main() {
    // 创建运行时
    JSRuntime *rt = JS_NewRuntime();
    
    // 创建上下文
    JSContext *ctx = JS_NewContext(rt);
    
    // 初始化标准模块
    js_init_module_std(ctx, "std");
    js_init_module_os(ctx, "os");
    
    // 执行 JavaScript 代码
    const char *code = "console.log('Hello from yps-quickjs!');";
    JSValue result = JS_Eval(ctx, code, strlen(code), "<eval>", JS_EVAL_TYPE_GLOBAL);
    
    // 清理
    JS_FreeValue(ctx, result);
    JS_FreeContext(ctx);
    JS_FreeRuntime(rt);
    
    return 0;
}

头文件

  • quickjs.h - 核心 JavaScript 引擎 API
  • quickjs-libc.h - 标准 C 库扩展 API可选

许可证

MIT License - 详见 LICENSE 文件

原项目

基于 QuickJS-ng 项目开发。