# quickjspp
**Repository Path**: gitnow/quickjspp
## Basic Information
- **Project Name**: quickjspp
- **Description**: Quick JS C++ Warpper
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 1
- **Forks**: 0
- **Created**: 2020-06-17
- **Last Updated**: 2025-06-06
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
QuickJSPP is QuickJS wrapper for C++. It allows you to easily embed Javascript engine into your program.
QuickJS is a small and embeddable Javascript engine. It supports the ES2020 specification including modules, asynchronous generators and proxies. More info:
# Example
```cpp
#include "quickjspp.hpp"
#include
class MyClass
{
public:
MyClass() {}
MyClass(std::vector) {}
double member_variable = 5.5;
std::string member_function(const std::string& s) { return "Hello, " + s; }
};
void println(const std::string& str) { std::cout << str << std::endl; }
int main()
{
qjs::Runtime runtime;
qjs::Context context(runtime);
try
{
// export classes as a module
auto& module = context.addModule("MyModule");
module.function<&println>("println");
module.class_("MyClass")
.constructor<>()
.constructor>("MyClassA")
.fun<&MyClass::member_variable>("member_variable")
.fun<&MyClass::member_function>("member_function");
// import module
context.eval("import * as my from 'MyModule'; globalThis.my = my;", "", JS_EVAL_TYPE_MODULE);
// evaluate js code
context.eval("let v1 = new my.MyClass();" "\n"
"v1.member_variable = 1;" "\n"
"let v2 = new my.MyClassA([1,2,3]);" "\n"
"function my_callback(str) {" "\n"
" my.println(v2.member_function(str));" "\n"
"}" "\n"
);
// callback
auto cb = (std::function) context.eval("my_callback");
cb("world");
}
catch(qjs::exception)
{
auto exc = context.getException();
std::cerr << (std::string) exc << std::endl;
if((bool) exc["stack"])
std::cerr << (std::string) exc["stack"] << std::endl;
return 1;
}
}
```
# Installation
QuickJSPP is header-only - put quickjspp.hpp into your include search path.
Compiler that supports C++17 or later is required.
The program needs to be linked against QuickJS.
Sample CMake project files are provided.
# License
QuickJSPP is licensed under [CC0](https://creativecommons.org/publicdomain/zero/1.0/). QuickJS is licensed under [MIT](https://opensource.org/licenses/MIT).