Overview
QuickJS supports both ES6 JavaScript modules and native C modules. The module system follows the ECMAScript specification and allows you to organize code into reusable components.ES6 JavaScript modules
Module syntax
QuickJS supports standard ES6 module syntax:Loading ES6 modules
From the command line:Module detection
QuickJS can automatically detect if code is a module:Native C modules
Native modules allow you to expose C functionality to JavaScript.Module structure
Every native module must have an initialization function:Implementing exports
Complete example
Here’s a complete native module from the QuickJS examples:Built-in modules
QuickJS includes several built-in modules:qjs:std module
qjs:os module
qjs:bjson module
Initializing built-in modules
From C code:Module loading
Custom module loader
You can implement a custom module loader:Default module loader
The default loader provided by quickjs-libc:Dynamic imports
QuickJS supports dynamicimport() expressions:
Module namespaces
Import entire module as namespace:Module caching
QuickJS caches loaded modules:Best practices
Module paths are resolved relative to the current module’s directory, similar to Node.js.
Example: Class-based module
Native modules can export classes with methods:See also
- Module evaluation API - Module loading functions
- Native modules example - Complete native module tutorial
- Standard library - Built-in module reference