Давайте теперь по запросу будем отдавать
не какой-то текст, а корректно оформленную
HTML страницу. Пусть такая страница хранится
в файле page.html
:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8">
<title>my page</title>
</head>
<body>
<p>
my first page on NodeJS
</b>
</body>
</html>
Давайте по запросу прочитаем эту страницу из файла и отправим ее в браузер:
http.createServer(async (request, response) => {
if (request.url != '/favicon.ico') {
let text = await fs.promises.readFile('page.html', 'utf8');
response.writeHead(200, {'Content-Type': 'text/html'});
response.write(text);
response.end();
}
}).listen(3000);
Как вы видите, чтение файла осуществляется асинхронным образом. В этом случае в ожидании считывания файла с диска сервер сможет обрабатывать запросы других пользователей к нашему серверу.
Дан объект с URL-лами и соответствующими им именам HTML страниц:
let obj = {
'/page1': 'file1.html',
'/page2': 'file2.html',
'/page3': 'file3.html',
}
Сделайте сервер на основе этого объекта.
При запросе существующего в объекте адреса
отдавайте соответствующую страницу, а при
запросе отсутствующего - сообщение об ошибке
и статус 404
.