强曰为道
与天地相似,故不违。知周乎万物,而道济天下,故不过。旁行而不流,乐天知命,故不忧.
文档目录

QuickJS 嵌入式 JavaScript 引擎完全教程

QuickJS 嵌入式 JavaScript 引擎完全教程

概述

QuickJS 是由 Fabrice Bellard(FFmpeg、QEMU、TinyCC 作者)开发的一款小型、可嵌入的 JavaScript 引擎。它完整支持 ES2023 规范,以极小的二进制体积(约 210KB)和零外部依赖著称,非常适合嵌入式系统、游戏脚本引擎、IoT 设备以及需要安全沙箱执行用户代码的场景。

为什么选择 QuickJS?

特性 QuickJS V8 Duktape JerryScript
ES2023 支持 ✅ 完整 ✅ 完整 ❌ ES5.1 ❌ ES5.1 子集
二进制体积 ~210KB ~10MB+ ~300KB ~200KB
内存占用 极低 极低
JIT 编译
字节码编译
异步/生成器
依赖项
许可证 MIT BSD MIT Apache 2.0
积极维护 ⚠️ 低活跃

适用场景

  • 嵌入式设备:在资源受限的 MCU/SoC 上运行 JavaScript 脚本
  • 游戏引擎脚本:作为游戏逻辑层的脚本语言
  • 安全沙箱:执行不受信任的用户代码
  • 配置与自动化:用 JavaScript 替代 Lua/JSON 作为配置语言
  • IoT 网关:在网关设备上运行数据处理脚本
  • 桌面应用扩展:为 C/C++ 应用添加脚本能力

教程目录

本教程共 10 章,由浅入深覆盖 QuickJS 的方方面面。

章节 标题 内容概要
01 QuickJS 概述 QuickJS 简介、ES2023 支持、与 V8/Duktape 对比、适用场景
02 安装与编译 源码获取、编译构建、qjs 解释器、qjsc 编译器、语言绑定、FFI、WebAssembly
03 基本使用 REPL 交互、脚本执行、模块系统、字节码编译与执行
04 C API 详解 JSContext、JSValue、运行时管理、C 回调、自定义对象、内存管理
05 模块系统 ES Module 导入导出、字节码模块、自定义模块加载器、动态导入
06 原生扩展 C 模块编写、原生函数注册、自定义类定义、属性与方法、继承体系
07 嵌入与安全 嵌入应用、沙箱隔离、执行超时、内存限制、中断机制、递归限制
08 性能优化 字节码优化、内存管理、启动时间、与 V8 对比、基准测试
09 Docker 使用 Docker 环境、嵌入式开发工作流、交叉编译、自动化测试、脚本运行
10 最佳实践 沙箱安全、嵌入式应用、脚本化架构、游戏脚本、IoT 应用

学习路线建议

快速入门(1-2 天)

  1. 阅读第 01 章了解 QuickJS 的定位和能力
  2. 按第 02 章完成编译安装
  3. 跟着第 03 章跑通基本用法

C/C++ 开发者(3-5 天)

  1. 深入第 04 章掌握 C API
  2. 学习第 05 章的模块系统
  3. 通过第 06 章实现原生扩展

生产环境部署(1-2 天)

  1. 第 07 章学习嵌入与安全最佳实践
  2. 第 08 章进行性能调优
  3. 第 09 章搭建 CI/CD 环境
  4. 第 10 章参考最佳实践落地

环境要求

工具 最低版本 说明
GCC 4.8+ 或 Clang 3.4+
Make 3.81+ 构建工具
Git 2.0+ 获取源码
Docker 20.10+ 第 09 章需要

相关资源