Node.js - новая экосистема на основе JavaScript

Это сервер, написанный на JavaScript, но это может быть гораздо больше.

Node.js может работать локально, в Linux и Windows. Он взаимодействует с браузером, поэтому можно создавать приложения в JavaScript, работающие локально или удаленно и которые будут использовать HTML 5 и Canvas в качестве интерфейса. Мы будем развивать эту возможность и ее последствия.

Node.js на самом деле не замена Apache, а инструмент для веб-мастеров, которые хотят полностью контролировать то, что происходит на удаленном сервере, или иметь какой-то локальный сервер для приложений, работающих одновременно и делящихся данными. MySpace - пример сайта, работающего под Node.js, с фреймворком Express. Groupon в 2013 году перенесла свою инфраструктуру с Rail на Node.js и стала одной из крупнейших площадок, работающих с этой системой. Среди других крупных сайтов, использующих Node, - Paypal, Yahoo.

Node.js - сервер приложений

Это сервер, написанный на JavaScript, который может использоваться как модуль программы, написанной на любом другом языке.

С помощью компилятора JIT V8 он может интерпретировать скрипты на JavaScript. Его самого интерпретирует V8. Формально это книжный магазин, добавленный в V8 и инкапсулированный в программу запуска.

Он реагирует на события, каждый открывает поток. Он работает асинхронно, каждое событие вызывает процесс, выполняемый независимо от других. Он также не блокирует, что означает, что не нужно что-то блокировать, чтобы предотвратить дальнейший доступ при выполнении операции, как это бывает в многопоточности.

Его можно установить на сервер вместо Apache, где ему выдадут URL-адреса страниц для загрузки или запускаемых приложений. Они будут выполняться в браузере на локальном посту.

Его можно установить локально, проще, чем Apache, это исполняемый файл, который достаточно запустить в командной строке, чтобы сделать доступным для браузера с локальным IP и номером порта.

Она менее полная, чем Apache, иногда приходится добавлять код для обработки операций, которые с самого начала выполняет Apache (для версии Node.js 6.0), или добавлять фреймворк.

Он не зависит от протокола, может использовать HTTP для предоставления HTML-страниц или других протоколов для других типов приложений.

Работа описана на схеме ниже. Сценарий JavaScript создает экземпляр сервера и присваивает ему порт, с помощью которого браузер или другой агент может взаимодействовать и взаимодействовать со сценарием.

Diagramme de Node.js

Используется node.js, давая ему программу JavaScript для интерпретации

Предположим, мы создадим сценарий, который назовем monscart.js. Запускаем командный сервер следующим образом:

node moncart.js

Сценарий должен содержать код для создания экземпляра сервера, например:

var http = require('http');
function f(request, response)
{
  response.writeHead(200, {'Content-Type': 'text/plain'});
  response.write(new Date() +'\nServeur en ligne...');
  response.end();
}
var server = http.createServer(f);
server.listen(1000);

Сервер создается таким образом:

  1. Загрузить http-модуль для сервера, следующего за этим протоколом, и назначить его переменной.
  2. Создание http-сервера путем вызова метода createServer модуля http с помощью команды: server.createServer ().
    Этот метод имеет в качестве параметра функцию, которая вызывается объектом server с двумя объектами (которым назначаются имена request и response).
  3. Метод writeHead объекта response создает заголовок с кодом состояния HTTP 200, означающим OK.
  4. Метод write отображает сообщение.
  5. Метод end отмечает конец отправки данных сервером (без связи). Она также может показывать сообщение как запись.
  6. Объект запроса здесь не используется, но предоставляется доступ к полезным функциям. См. следующий пример.
  7. Назначается порт с методом списка созданного сервера: server.listen (1000 ).
    Примером является номер 1000, возможны другие значения в диапазоне от 0 до 65535, поскольку этот номер не используется другой службой.

Параметр createServer - это функция, отправляющая сообщение пользователю. Ее можно объявить анонимной функцией, она используется в качестве параметра внутренней функцией для объекта сервера и содержит объекты запроса и ответа, которые остаются назначенными после возвращения функции f.
Код извлекает выгоду из закрытий, присущих JavaScript. Закрытие заключается в том, чтобы дать глобальный охват переменным, объявленным в функции, но делающим их доступными только для этой функции. При множественном вызове функции переменные сохраняют значение от одного вызова к другому. Таким образом, процесс может быть запущен в «песочнице», независимо от других.

Для доступа к приложению введите URL-адрес браузера:

127.0.0.1:1000

Соответствует локальному IP, за которым следует номер выбранного порта. Вы увидите дату и время, а затем сообщение «Онлайн-сервер».... Или :

localhost:1000

Этот URL-адрес останется доступным до тех пор, пока не будет отменена команда node monscart.js или окно командной строки будет закрыто. Если перезапустить другой сценарий, например, node script 2.js, то при перезагрузке страницы ты получишь доступ к этому новому скрипту.

Демонстрация: Обеспечение сохранности данных

Сценарий, показывающий, как данные могут сохраняться от одного подключения к другому.

Для начала мы дополним заголовок предыдущего сценария, чтобы поддерживать акценты и другие иностранные коды, чтобы иметь возможность интегрировать текст в наш упрощенный интерфейс :

  response.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});

Кодировка UTF-8 поддерживает большинство символов.

Мы будем добавлять счетчик подключений и показывать счетчик, поэтому можно проверить, что данные, созданные во время одного подключения, сохраняются для следующего, что необходимо для совместного использования данных между приложениями.

Чтобы проверить пример, несколько раз загрузите страницу в браузер с ранее указанным URL-адресом.

var http = require('http');
var counter = 0;
function f(req, response)
{
  if(request.url == '/favicon.ico') return;
  response.writeHead(200, {'Content-Type': 'text/plain;charset=utf-8'});
  if(counter == 0)
    response.write(new Date() +'\nServeur en ligne...\nPremière connexion.');
  else
    response.write((counter + 1) + " ème connexion.");
  counter++;
  response.end();
}
var server = http.createServer(f);
server.listen(1000);

Counter - глобальная переменная. При первом входе на экране отображается только номер входа в систему.

Первая строчка...

  if(request.url == '/favicon.ico') return;	

... служит для удаления побочного эффекта: то, что браузер при загрузке страницы делает два последовательных запроса: один для страницы, другой для фавикона, что увеличивает счетчик дважды !

Ты можешь получить доступ к URL из нескольких браузеров, сохраняя сохранение данных.

Доступ к серверу можно получить и без браузера. Например, локально, со скриптом в PHP, можно использовать curl для взаимодействия с сервером, одновременно с браузером. Об этом пойдет речь в другой статье.

Пока сервер остается активным (когда он находится в сети, он должен оставаться постоянно), можно общаться с различными браузерами или другими видами агентов пользователей.

Следующий шаг: Создание сервера страниц или приложений с помощью Node.js .

Получить исходный код

Полезные модули

С помощью npm, включенного в архив, можно автоматически добавлять модули для завершения работы сервера.

Ресурсы и информация