大家好,很高兴又见面了,我是"高级前端进阶",由我带着大家一起关注前端前沿、深入前端底层技术,大家一起进步,也欢迎大家关注、点赞、收藏、转发!
FFmpeg 和 QEMU 的创建者 Fabrice Bellard 以及 C 语言专家 Charlie Gordon 在 2019 年宣布开源 QuickJS 。 QuickJS 在 MIT 许可下发布,它是一个“小而完整的 JavaScript 引擎”。当然,还可以使用 Emscripten 将 QuickJS 编译成 WebAssembly ,从而实现在浏览器中运行。
QuickJS 支持 ES2020 规范,包括模块、异步生成器(Asynchronous Generator)、Proxy 和 BigInt。同时可由开发者自行决定是否支持数学扩展,例如:大十进制浮点数 (BigDecimal)、大二进制浮点数 (BigFloat) 和运算符重载等。
Fmpeg :是领先的多媒体框架,能够解码、编码、转码、混合、解密、流媒体、过滤和播放人类和机器创造的几乎所有东西,支持几乎所有的格式! QEMU:是模拟处理器的自由软件。它与Bochs,PearPC近似,但其具有某些后两者所不具备的特性,如速度优势、跨平台特2.QuickJS 主要特点
其实大部分人选择 QuickJS 的原因之一就在于其性能。在性能方面,QuickJS 明显优于其他可选方案,例如,在 bench-v8 测试中,QuickJS 领 先 XS 引擎 35%,领先 DukTape 一倍多,领先 JerryScript 三倍,领先 MuJS 七倍。
除了性能优势外,QuickJS 还有以下特点:
除了在应用程序中嵌入引擎的库外,项目还提供了 qjs 解释器,可用于从命令行直接运行 JavaScript 代码。 此外,qjsc 编译器可用于单独运行且不需要外部依赖的可执行文件。
需要注意的是,QuickJS 项目还在开发三个与 QuickJS 相关且适合个人使用的 C 库:
通过如下步骤进行安装:
下载上面的 QuickJS 源代码(解压后将目录命名为 quickjs),然后直接 cd 到该目录,执行 make 命令将会自动开始编译(如果有需求可以解压后修改其中的 Makefile 文件)。编译完成后,就可以运行代码了。
在解压后的 quickjs 目录同级新建一个 quick.js 文件,在 quick.js 文件中输入下面的代码内容:
const a = 13;const b = 12;console.log('输出值为:', a + b);
qjs 是命令行解释器(Read-Eval-Print Loop),可以传递 Javascript 文或表达式作为参数来执行它们。在终端直接运行下面的命令:
./qjs ../quick.js
可以看到终端输出如下结果:
输出值为: 25;
除了 qjs 命令外,还可以使用 qjsc。 qjsc 是命令行编译器,先 cd 到 quickjs 目录,然后直接执行下面命令:
./qjsc -o hello examples/hello.js// -o :设置输出文件名(默认 = out.c 或 a.out)// qjsc命令的语法为:qjsc [options] [files]
此时可以看到 quickjs 下出现了一个 examples 目录,目录里面是一个 hello.js 文件。然后直接执行下面命令:
./hello
可以看到输出结果为:
Hello World
可以直接在 NumCalc 上运行 QuickJS。NumCalc 是一款基于 QuickJS 的轻量级且易于使用的科学计算器。 它具有以下特点:
可以在平台上直接运行 JS 代码(链接查看文末资料),具体如下图所示:
本文主要和大家介绍下QuickJS,即一个小型并且可嵌入的Javascript引擎。文章从什么是 QuickJS、QuickJS 主要特点、安装使用 QuickJS等来展开。因为篇幅有限,没有过多展开。如果有兴趣,文末的参考资料提供了大量优秀文档以供学习。
https://bellard.org/quickjs/
https://hub.packtpub.com/introducing-quickjs-a-small-and-easily-embeddable-javascript-engine/
https://github.com/bellard/quickjs
https://bellard.org/quickjs/quickjs.html#Quick-start
http://numcalc.com/(在线运行示例)