<script/>defer
El atributo
deferindica al navegador que no espere por el script. En lugar de ello, debe seguir procesando el HTML, construir el DOM. El script carga “en segundo plano” y se ejecuta cuando el DOM esta completo. Fuente.
<p>...contenido previo script...</p>
<script defer src="<https://javascript.info/article/script-async-defer/long.js?speed=1>"></script>
<!-- Inmediatamete visible -->
<p>...contenido posterior al script...</p>
async
Los scripts
asynccargan en segundo plano y se ejecutan cuando están listos. El DOM y otros scripts no esperan por ellos, y ellos no esperan por nada. Un script totalmente independiente que se ejecuta en cuanto se ha cargado. Fuente.
<p>...contenido previo a los scripts...</p>
<script>
document.addEventListener('DOMContentLoaded', () => alert("¡DOM listo!"));
</script>
<script async src="<https://javascript.info/article/script-async-defer/long.js>"></script>
<script async src="<https://javascript.info/article/script-async-defer/small.js>"></script>
<p>...contenido posterior a los scripts...</p>
Debemos hacer la inserción de content para tenerlo visualmente, justo antes del catch.
content.innerHTML = view;
Para el catch, se debe agregar la estructura (podemos editar la salida como queramos):
catch (err) {
console.log(err);
}
Para conectar el index.html con el main.js, se agrega un script con la raíz del proyecto:
<script defer src="./assets/main.js"></script>