Modern JavaScript platforms, such as Node.js provide a way of loading objects
from external modules using the "require" function. Haxe supports automatic generation
of "require" statements for extern
classes.
This feature can be enabled by specifying @:jsRequire
metadata for the extern class. If our extern
class represents a whole module, we pass a single argument to the @:jsRequire
metadata specifying the name of the module to load:
@:jsRequire("fs") extern class FS { static function readFileSync(path:String, encoding:String):String; }
In case our extern
class represents an object within a module, second @:jsRequire
argument specifies an object to load from a module:
@:jsRequire("http", "Server") extern class HTTPServer { function new(); }
The second argument is a dotted-path, so we can load sub-objects in any hierarchy.
If we need to load custom JavaScript objects in runtime, a js.Lib.require
function can be used. It takes String
as its only argument and returns Dynamic
, so it is advised to be assigned to a strictly typed variable.