3 ms·
Being imperative instead of declarative, it hinders a host of key optimizations like parallel loading and dead code elimination
by brundolf 3y ago
Being imperative instead of declarative, it hinders a host of key optimizations like parallel loading and dead code elimination
- jampekka 3y agoThis is discussed in the link I posted. Bundlers manage to statically analyze CommonJS just fine. With require("stringliteral") and exports.thing = thing, that cover 99.9% or so usage, this is just as easy to statically analyze as ESM. Saying that you need declarative for static analysis is like saying tail call optimization is impossible. And if a stricter module system would be still required, it could have been quite easy to make compatible with, well, require.
- petre 3y agoRequire is fine but I totally hate the CJS exports. Feels like writing '90s era Perl code. On the other hand ESM dynamic imports like import('this').then(r => that()) rather suck.