强曰为道

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

QuickJS 嵌入式 JavaScript 引擎完全教程

QuickJS 嵌入式 JavaScript 引擎完全教程

概述

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

为什么选择 QuickJS?

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

适用场景

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

教程目录

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

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

环境要求

工具最低版本说明
GCC4.8+或 Clang 3.4+
Make3.81+构建工具
Git2.0+获取源码
Docker20.10+第 09 章需要

相关资源