quickJS 说明

QuickJS是一个轻量级且可嵌入的JavaScript引擎,支持ES2020,包括模块、异步生成器和代理。它具有快速启动时间、完整的ES2019支持,并可通过qjsc编译成独立的可执行文件。内置标准库、C API以及数学扩展如BigInt和BigFloat。本文档详细介绍了其主要特性和用法。
摘要由CSDN通过智能技术生成

过一段时间可能要用qjs,参考着github上的中文翻译再加上自己的机翻整理了一下,方便以后看
作为小白来说这东西真心看的一脸懵逼,很多地方看不懂
慢慢来吧~等变强了就看得懂了

quickJS JavaScript引擎

1. 简介

QuickJS是一个小型并且可嵌入的Javascript引擎,它支持ES2020规范,包括模块,异步生成器和代理器。

它可选支持数学扩展,例如大整数 (BigInt),大浮点数 (BigFloat) 以及运算符重载。

1.1 主要特性

  • 轻量而且易于嵌入:只需几个C文件,没有外部依赖,一个x86下的简单的“hello world”程序只要180 KiB。
  • 具有极低启动时间的快速解释器: 在一台单核的台式PC上,大约在100秒内运行ECMAScript 测试套件56000次。运行时实例的完整生命周期在不到300微秒的时间内完成。
  • 几乎完整实现ES2019支持,包括: 模块,异步生成器和和完整Annex B支持 (传统的Web兼容性)。许多ES2020中带来的特性也依然会被支持。
  • 通过100%的ECMAScript Test Suite测试。
  • 可以将Javascript源编译为没有外部依赖的可执行文件。
  • 使用引用计数(以减少内存使用并具有确定性行为)的垃圾收集与循环删除。
  • 数学扩展:BigInt, BigFloat, 运算符重载, bigint模式, math模式.
  • 在Javascript中实现的具有上下文着色和完成的命令行解释器。
  • 采用C包装库构建的内置标准库。

2. 用法

2.1 安装

提供Makefile可以在Linux或者MacOS/X上编译。通过使用MinGW工具在Linux主机上进行交叉编译,可以获得初步的Windows支持。

如果要选择特定选项,请编辑Makefile顶部,然后运行make

使用root身份执行 make install 可以将编译的二进制文件和支持文件安装到 /usr/local (这不是使用QuickJS所必需的).

2.2 快速入门

qjs命令行解析器 (Read-Eval-Print Loop). 您可以将Javascript文件和/或表达式作为参数传递以执行它们:

./qjs examples/hello.js

qjsc命令行编译器:

./qjsc -o hello examples/hello.js
./hello

生成一个没有外部依赖的 hello 可执行文件。

2.3 命令行选项

2.3.1 qjs解释器

用法: qjs [options] [files]

选项 说明
-h / --help 命令行选项列表
-e EXPR / --eval EXPR 执行EXPR
-i / --interactive 转到交互模式(在命令行上提供文件时,它不是默认模式).
-m / --module 作为ES6模块加载(默认=自动检测)。如果一个模块的文件名的扩展名是.mjs,或者源文件的第一个关键字是import,则模块会被自动检测。
–script 作为ES6脚本加载(默认=自动检测)。
–bignum 启用bignum扩展。BigDecimal对象、BigFloat对象和 "use math "指令。
-I file / --include file 包括一个附加的文件。

高级选项:

选项 说明
–std 使加载的脚本可以使用std和os模块,即使它不是一个模块。
-d / --dump 转存内存使用情况统计信息。
-q / --quit 只是实例化解释器并退出。
2.3.2 qjsc编译器

用法: qjsc [options] [files]

选项 说明
-c 只输出C文件中的字节码。默认是输出一个可执行文件。
-e 在一个C文件中输出main()和字节码。默认是输出一个可执行文件
-o output 设置输出文件名(默认= out.c或a.out)。
-N cname 设置生成数据的C名称。
-m 编译为Javascript模块(默认=自动检测)。
-D module_name 编译一个动态加载的模块和它的依赖项。当你的代码使用import关键字或os.Worker构造函数时,需要这个选项,因为编译器不能静态地找到动态加载的模块的名称。
-M module_name[,cname] 为一个外部C模块添加初始化代码。见c_module示例
-x 字节交换输出(仅用于交叉编译)。
-flto 使用链接时间优化。编译速度较慢,但可执行文件较小 和更快。当使用-fno-x选项时,这个选项会自动设置。
-fno-[eval|string-normalize|regexp|json|proxy|map|typedarray|promise|bigint] 禁用选定的语言功能,以产生一个较小的可执行文件。
-fbignum 启用bignum扩展:BigDecimal对象、BigFloat对象和 "use math "指令。

2.4 qjscalc 应用程序

qjscalc应用程序是qjsbn命令行解释器的超集,它实现了一个具有任意大整数和浮点数,分数,复数,多项式和矩阵的Javascript计算器。源代码在

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值