Первое что получает пользователь при открытии страницы сайта - это "заголовки" от сервера. В них содержится техническая информация о запрашиваемой странице, о типе её содержания, о размере и других параметрах, включая информацию о статусе ответа сервера. Заголовки можно установить методами "statusCode" и "setHeader". А содержимое страницы задаётся с помощью метода "write".
Попробуем привести простейший пример и разобраться со всем по порядку:
let http = require('http');
http.createServer(function(request, response) {
response.statusCode = 200;
response.setHeader('Content-Type' : 'text/html');
response.write('Тише, <b>мыши</b>, кот на крыше');
response.end();
}).listen(80);
В параметре метода "createServer" записывается функция с двумя аргументами - принимаемыми от пользователя к серверу (request) и передаваемыми от сервера к пользователю (responce) данными. Эта функция выполняется для каждого пользователя отдельно. То есть каждый посетитель сайта при запросе получит свой результат работы этой функции.
Учтите, что если внутри функции в параметре "createServer" использовались переменные, которые определялись вне неё, то их значение будет у всех пользователей одинаковым. То есть если один изменит его, то все остальные тоже увидят изменённое значение.
В этом примере NodeJS ожидает запроса через TCP порт номер 80 (в конце примера можно увидеть "listen(80)"). А в ответе сервера с помощью метода "setHeader" должен быть отправлен заголовок 'Content-Type' : 'text/html'
и с помощью метода "write" содержание страницы равное "Тише, мыши, кот на крыше". Метод "statusCode" добавляет заголовок с числовым кодом ответа сервера (200 - всё в порядке, 404 - нет такой страницы). Проверим работу этого примера.Для проверки необходимо запустить этот скрипт в консоли сервера. Делается это обычным способом (пишется "node" и относительный/абсолютный путь к файлу, который нужно запустить):
node script.js
После запуска ничего не будет выведено в консоль, но скрипт не будет остановлен. Скрипт войдёт в метод "createServer" и начнёт бесконечное выполнение (пока администратор сервера сам его не прервёт через Ctrl+C). Во время выполнения этого бесконечного цикла обратиться к серверу через браузер, к нужному 80-ому порту (это стандартный порт для сайтов без SSL шифрования). Вернётся страница с содержанием "Тише, мыши, кот на крыше".