quickjs是bellard大神的作品,小巧(也就1-2M的样子)易用,非常方便将javascript转换为可执行程序或c,速度有可能比v8稍微差一点。
-r--r--r-- 1 user users 1552898 Aug 17 15:04 libquickjs.a
-r--r--r-- 1 user users 1169504 Aug 18 07:36 libquickjs.so
-r--r--r-- 1 user users 1163237 Aug 18 12:33 qjs.dll
-rwxr-xr-x 1 user users 1195360 Aug 17 15:04 qjs
-rwxr-xr-x 1 user users 1010408 Aug 17 15:04 qjsc
lrwxrwxrwx 1 user users 3 Aug 17 15:04 qjscalc -> qjs
-rwxrwxrwx 1 user users 1046016 Aug 18 12:33 qjsc.exe
-rwxrwxrwx 1 user users 1091072 Aug 18 12:33 qjs.exe
下面是一个简单的javascript例子:
/*demoJS.js*/
import * as std from 'std';
function demoJS(args) {
if(args.length<2)
{
print("usage: name food\n");
return;
}
var file = std.open('test_outfile.txt','w');
var r="My name is " + args[0] + ". My favourite food is " + args[1] + ".";
console.log(r);
file.puts(r);
file.close();
}
var args=scriptArgs;
args.shift();
demoJS(args)
/*end demoJS.js*/
在linux系统下:
(1)可以直接运行
qjs demoJS.js "John" "fish"
My name is John. My favourite food is fish.
(2)也可以编译为可执行文件:
qjsc -o demoJS demoJS.js
在windows系统下:
象linux一样可以直接运行,但直接编译有些问题,会报错:
Executable output is not supported for this target
但我们可以这样做:
编译成c语言:
qjsc -e -o demoJS.c demoJS.js
然后按照c语言正常编译:
gcc -o demoJS demoJS.c -O3 -lquickjs -pthread