Code splitting and hot-reload for Haxe JavaScript applications.
If you use Haxe for JavaScript, directly or indirectly (React, OpenFl,...), then you probably want to:
Haxe has an excellent, compact and optimised JS output, but it's always a single file; even with good minification / gzip compression it can be a large payload.
Modular can split gigantic Haxe-JS outputs into load-on-demand features, without size/speed overhead, and without losing sourcemaps.
import MyClass;
...
load(MyClass).then(function(_) {
var c = new MyClass();
});
The approach is to reference one class asynchronously in your code:
There are 2 ways to use Haxe Modular, depending on your project/toolchain/goals:
In both cases, it is advisable to read about the technical details:
Both solutions:
hxml
build configuration,Standalone Modular is an easy, drop-in, addition to a regular Haxe JS build process - it is very lightweight and unobstrusive, and you don't need to learn Webpack.
Using NPM modules however requires a bit of ceremony: all the NPM dependencies have to
be gathered (manually) in a libs.js
which is loaded upfront.
Webpack Haxe Loader is a more powerful setup but you'll have to learn Webpack. Webpack is a complex and large system offering vast possibilities from the JS ecosystem.
Q: Where can I get more help? I have questions / issues...
Q: Is it only for React projects?
Q: Is it possible to minify the code?
uglifyjs
or closure
haxelibs for that:
releasing to production.Q: Can I extract a library/package from my code?
Q: Can I still use the includeFile
macro to inject JS code in the output?
--macro includeFile('my-lib.js')
.Q: Does it support Haxe 4's ES6 output? (-D js-es=6
)