Create a gist now

Instantly share code, notes, and snippets.

@eprev /charset.js
Last active Jan 4, 2017

What would you like to do?
'use strict';
// See http://eprev.org/2017/01/04/the-importance-of-html-character-encoding/
const http = require('http');
http.createServer((request, response) => {
let charset;
switch (request.url) {
case '/charset-is-specified':
charset = 'utf-8';
case '/charset-is-not-specified':
response.writeHead(200, {
'Content-Type': charset ? 'text/html; charset=utf-8' : 'text/html',
});
// Early-head
response.write(`
<!doctype html>
<html><head>
<title>Charset Encoding Test</title>
<script src="/scripts.js" async onload="console.log({scripts: performance.now()})"></script>
<link href="/styles.css" rel="stylesheet" onload="console.log({styles: performance.now()})">
<script>document.addEventListener('DOMContentLoaded', () => console.log({DOMContentLoaded: performance.now()}))</script>
</head>
`);
// The rest of the document
setTimeout(() => {
response.end('<body></body></html>');
}, 1000);
break;
case '/scripts.js':
response.writeHead(200, {
'Content-Type': 'application/javascript',
});
response.end();
break;
case '/styles.css':
response.writeHead(200, {
'Content-Type': 'text/css',
});
response.end('');
break;
default:
response.writeHead(404, {
'Content-Type': 'text/plain',
});
response.end();
}
}).listen(4000);
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment