JS modern

Starting as an option in Haxe 2.09, and as default in Haxe 3, the JS output is modernized, meaning:

  • Output runs in ES5 strict mode, allowing for more robust and optimizable JS.
  • Output is wrapped in a (function() {})() to prevent writing to the global namespace, and allow JS minifiers to be more efficient. You can intentionally write classes and static methods to the global namespace by tagging them with @:expose:
    @:expose("someLib.SomeName")
    class MyExternalClass { }

    Where "someLib.SomeName" is the optional exposed location of the class or function. By default, @:expose uses the full class and package name for the exposed location.

Haxe 3+

  • Modern JS output mode is the default
  • Enable Classic JS mode with -D js-classic

Haxe 2.09+

  • Classic JS output remains the default
  • Enable Modern JS output mode with --js-modern
version #19728, modified 2013-09-02 17:21:16 by Danielku15