7 июня 2022 г.

Node.JS для решения задач

Материал на этой странице устарел, поэтому скрыт из оглавления сайта.

В этом разделе предлагаются задачи по теме AJAX.

Конечно же, они требуют взаимодействия с сервером. Мы будем использовать серверную часть, написанную на JavaScript, на Node.JS.

Если вы не использовали Node.JS ранее – не беспокойтесь. Здесь нашей целью является преимущественно клиентская часть, поэтому прямо сейчас изучать Node.JS не обязательно. Серверные скрипты уже готовы. Нужно только поставить Node.JS и модули, чтобы их запускать.

Установка

Для настройки окружения будет достаточно сделать два шага:

  1. Сначала установите сам сервер Node.JS.

    Если у вас Unix-система – рекомендуется собрать последнюю версию из исходников, а также NPM. Вы справитесь.

    Если Windows – посетите сайт https://nodejs.org или скачайте установщик (32 или 64-битный) с расширением .msi из https://nodejs.org/dist/latest/.

  2. Выберите директорию, в которой будете решать задачи. Запустите в ней:

    npm install node-static

    Это установит в текущую директорию модуль node-static, который станет автоматически доступным для скриптов из поддиректорий.

    Если у вас Windows и команда не сработала, то скорее всего дело в том, что «не подхватились» новые пути. Перезапустите ваш файловый менеджер или консоль.

Проверка

Проверьте инсталяцию.

Для этого:

  1. Создайте какую-нибудь поддиректорию и в ней файл server.js с таким содержимым:

    var http = require('http');
    var static = require('node-static');
    var file = new static.Server('.');
    
    http.createServer(function(req, res) {
      file.serve(req, res);
    }).listen(8080);
    
    console.log('Server running on port 8080');
  2. Запустите его: node server.js.

    Должно вывести:

    Server running on port 8080
Нельзя запустить больше одного сервера одновременно!

При попытке запуска двух серверов (например, в разных консолях) – будет конфликт портов и ошибка.

  1. Откройте в браузере http://127.0.0.1:8080/server.js.

    Должно вывести код файла server.js.

Если всё работает – отлично, теперь вы готовы решать задачи.

Примеры

В примерах, за редким исключением, для краткости будет приводиться не полный скрипт на Node.JS, а только код обработки запроса.

Например, вместо:

var http = require('http');
var url = require('url');
var querystring = require('querystring');

function accept(req, res) {

  res.writeHead(200, {
    'Content-Type': 'text/plain',
    'Cache-Control': 'no-cache'
  });

  res.end("OK");
}

http.createServer(accept).listen(8080);

…Будет только функция accept, или даже только её содержимое:

res.writeHead(200, {
  'Content-Type': 'text/plain',
  'Cache-Control': 'no-cache'
});

Основные методы

В функции accept используются два объекта:

  • req – объект запроса («request»), то есть то, что прислал клиент (обычно браузер), из него читаем данные.
  • res – объект ответа («response»), в него пишем данные в ответ клиенту.
    • вызов res.writeHead(HTTP-код, [строка статуса], {заголовки}) пишет заголовки.
    • вызов res.write(txt) пишет текст в ответ.
    • вызов res.end(txt) – завершает запрос ответом.

Демо

Кроме просмотра кода, можно будет попробовать и скачать различные демки.

Вот пример демо, можете попробовать нажать на кнопку – она работает.

Если хотите посмотреть пример поближе и поиграть с ним – скачайте архив (кнопка справа-сверху в примере выше), он будет работать и на вашем Node.JS.

Больше о Node.JS

Больше о сервере Node.JS можно узнать в скринкасте по Node.JS.

Карта учебника

Комментарии

перед тем как писать…
  • Если вам кажется, что в статье что-то не так - вместо комментария напишите на GitHub.
  • Для одной строки кода используйте тег <code>, для нескольких строк кода — тег <pre>, если больше 10 строк — ссылку на песочницу (plnkr, JSBin, codepen…)
  • Если что-то непонятно в статье — пишите, что именно и с какого места.