Loading JS
How can we load JavaScript code into a website?
Different ways of static inclusion⌗
( (CC) whatwg.org )
Loading JS from JS⌗
Classic way (works everywhere)⌗
function loadJS(src, cb) {
const script = document.createElement("script");
script.src = src;
script.onload = cb;
// script.async, script.defer, ... could be set here as well
document.head.appendChild(script);
}
loadJS("/js/foobar.js", () => console.log("foobar loaded"));
Adding async/await⌗
const loadScript = async src => {
return new Promise(resolve => {
// loadJS from above, I don't want to copy it
loadJS(src, () => resolve());
});
};
// ! from an async context
await loadScript("/js/foobar.js");
console.log("foobar loaded");
Modules⌗
Modules can be loaded only from othen modules.
import { whatever } from "foobar.js"; // cannot use variables here, and should be in the root context
whatever("hello");
Dynamic import⌗
const { whatever } = await import("foobar.js"); // variables can be used
whatever("hello");
Loading CSS⌗
Basically the same way:
function loadCSS(path, cb) {
const link = document.createElement("link");
link.href = path;
link.type = "text/css";
link.rel = "stylesheet";
link.onload(cb);
document.head.appendChild(link);
}
loadCSS("/css/whatever.css");
…from CSS⌗
@import "./whatever.css";