We can summarize all the preceding details using the following comparison table:
Module syntax |
Design-time support |
Module loader runtime support |
Native runtime support |
Optimization tool support |
Recommended |
Legacy internal modules |
Yes |
No |
Yes (via closures) |
No |
No |
Namespaces |
Yes |
No |
Yes (via closures) |
No |
No |
ES6 |
Yes |
Yes |
Yes |
Yes |
Yes |
Legacy external modules |
Yes |
Yes |
No |
Yes |
No |
AMD |
No |
Yes |
No |
Yes |
No |
CommonJS |
No |
Yes |
No |
Yes |
No |
UMD |
No |
Yes |
No |
Yes |
No |
SystemJS |
No |
Yes |
No |
Yes |
No |
As we can see, the recommended solution going forward is the usage of ES6 modules. If you are targeting a JavaScript engine that doesn't ...