Browser
<html>
<head>
<link rel="stylesheet" href="mystyle.css">
</head>
<body>
<script type="module" src="code/date.js"></script>
</body>
</html>
Ajax
The following code uses the old low-level ajax api.
const xhr = new XMLHttpRequest()
xhr.onreadystatechange = () => {
if (xhr.readyState === 4) {
xhr.status === 200 ? console.log(xhr.responseText) : console.error('error')
}
}
xhr.open('GET', 'https://yoursite.com')
xhr.send()
Fetch
// fetch options
const options = {
"method": "POST",
headers: {
'Content-Type': 'application/json'
},
"body": "hello world"
}
fetch(url, options).then(response => {
// returns the status code
console.log(response.status)
// returns the received headers
console.log(response.headers.get("Content-Type"))
// returns a promise which resolve to the text
response.json().then(json => console.log(json))
// returns a promise which resolve to the text
response.text().then(text => console.log(text))
}).catch(err => console.error(err))
Local Storage and Session Storage
With localStorage and sessionStorage, data can be stored on the browser.
let user = {name: "Hans", highscore: 234}
localStorage.setItem("user", JSON.stringify(user))
localStorage.msg = "Hello World"
console.log(localStorage.getItem("user"))
History
hsitory.length // the amount of history entries
history.back() // goes back
history.pushState(state, unused, url)
history.replaceState(stateObj, unused, url)
Web Workers
With web workers, JavaScript can run code in a separate thread. However, the web worker has to communicate with the frontend code over events to avoid locking.
// squareworker.js
addEventListener("message", event => {
postMessage(event.data * event.data)
})
// main script
let squareWorker = new Worker("code/squareworker.js")
squareWorker.addEventListener("message", event => {
console.log("The worker responded:", event.data)
})
squareWorker.postMessage(10)
squareWorker.postMessage(24)