5 ms·
>Note that since ES6 imports are statically defined, the browser can find and begin to download dependent files before even parsing the actual JS. I think you
by Arnavion 10y ago
>Note that since ES6 imports are statically defined, the browser can find and begin to download dependent files before even parsing the actual JS.
I think you meant executing the actual JS. Finding the imports requires parsing the file, and imports can be anywhere in the file as long as they're at the top level.
- domenicd 10y agoIt depends. For HTML all browsers do a form of "preparsing" where they do simplistic string searches for things that look like URLs and start speculatively fetching based on that. You could imagine a similar pass for JS modules.
- Arnavion 10y agoAh, that's cool.
- bzbarsky 10y agoFirefox doesn't do simplistic string searches, for what it's worth. It actually tokenizes the HTML and kicks off loads from tokenization. If someone then misuses document.write the token stream has to be thrown out and things have to be retokenized, but that's rare in practice. The tradeoff is better accuracy of the preloader and not having to go through the text twice unless someone is misusing document.write.