Unfortunately my knowledge of JavaScript
module loaders is still growing and I'm trying to understand their relationship to the new ES6 Modules
. As far as I can tell using a module loader like CommonJS
or RequireJS
using ES5
compliant JavaScript
really needed the use of an asynchronous module loader to increase performance and load only as needed using the respective module loader's syntax.
However looking at the ES6
module documentation and reading other information, it appears to me that module loading is natively supported via the import
and export
keywords. If this is the case am I correct that ES6 JS modules
natively support asynchronous module loading and therefore I do not need to use an additional tool like CommonJS
or RequireJS
?
it appears to me that module loading is natively supported via the import and export keywords.
Not exactly. The import
and export
declarations only define the dependencies and the interface of each module. They allow to statically extract strings that name the required modules, nothing else.
If this is the case, do I not need to use an additional tool like CommonJS or RequireJS?
No. You still need to use a loader for ES6 modules, which resolves the names or paths or whatever from the import
s to actual module files and loads them with an implementation-dependent method.
There are many tools or toolchains available, examples for the different solutions are