2 用法

2.1 安装

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

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

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

:可以参考QuickJS中文关于Windows下编译安装Linux下编译安装相关文档。

2.2 快速入门

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

  1. ./qjs examples/hello.js

qjsc 是命令行编译器:

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

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

qjsbnqjscbn 是具有数学扩展的相应解释器和编译器:

  1. ./qjsbn examples/pi.js 1000

显示PI的1000位数字

  1. ./qjsbnc -o pi examples/pi.js
  2. ./pi 1000

编译并执行PI程序。

2.3 命令行选项

2.3.1 qjs 解释器

用法: qjs [options] [files]

选项:

-h

--help

选项列表。

-e `EXPR`

--eval `EXPR`

执行EXPR.

-i

--interactive

转到交互模式 (在命令行上提供文件时,它不是默认模式).

-m

--module

加载为ES6模块(默认为.mjs文件扩展名)。

高级选项包括:

-d

--dump

转存内存使用情况统计信息。

-q

--quit

只是实例化解释器并退出。

2.3.2 qjsc 编译器

用法: qjsc [options] [files]

选项:

-c

仅输出C文件中的字节码,默认是输出可执行文件。

-e

main() C文件中的输出和字节码,默认是输出可执行文件。

-o output

设置输出文件名(默认= out.c或a.out)。

-N cname

设置生成数据的C名称。

-m

编译为Javascript模块(默认为.mjs扩展名)。

-M module_name[,cname]

添加外部C模块的初始化代码。查看c_module示例。

-x

字节交换输出(仅用于交叉编译)。

-flto

使用链接时间优化。编译速度较慢,但可执行文件更小更快。使用选项时会自动设置此选项-fno-x

-fno-[eval|string-normalize|regexp|json|proxy|map|typedarray|promise]

禁用所选语言功能以生成较小的可执行文件。

2.4 qjscalc 应用程序

qjscalc应用程序是qjsbn命令行解释器的超集,它实现了一个具有任意大整数和浮点数,分数,复数,多项式和矩阵的Javascript计算器。源代码在qjscalc.js中。http://numcalc.com上提供了更多文档和Web版本。

2.5 内置测试

运行make test以运行QuickJS存档中包含的一些内置测试。

2.6 Test262 (ECMAScript 测试套件))

QuickJS存档中包含test262运行程序。

作为参考,完整的test262测试在档案qjs-tests-yyyy-mm-dd.tar.xz中提供。您只需将其解压缩到QuickJS源代码目录中即可。

或者,test262测试可以安装:

  1. git clone https://github.com/tc39/test262.git test262
  2. cd test262
  3. git checkout 94b1e80ab3440413df916cd56d29c5a2fa2ac451
  4. patch -p1 < ../tests/test262.patch
  5. cd ..

补丁添加了特定于实现的harness函数,并优化了低效的RegExp字符类和Unicode属性转义测试(测试本身不会被修改,只有慢速字符串初始化函数被优化)。

测试可以运行

  1. make test2

有关更多信息,请运行./run-test262以查看test262 runner的选项。配置文件test262.conftest262bn.conf包含运行各种测试的选项。