Как сделать сервер на node js

Как создать веб-сервер на JavaScript с нуля, используя только Node.js

Фото Сафара Сафарова на Unsplash

Удобное руководство для новичков по созданию вашего первого веб-сервера на Node.js

В этом руководстве я покажу вам, как создать простой веб-сервер, используя среду выполнения JavaScript Node.js.

Если вы не знаете, что такое Node.js, или чувствуете, что ваше понимание этого все еще немного нечеткое, то я настоятельно рекомендую сначала прочитать эту статью:

Для абсолютных новичков: что такое Node.js?

В этом руководстве предполагается, что у вас есть очень базовые знания о JavaScript, вашем терминале (на Mac), Node.js, установленном на вашем компьютере, и редакторе кода, таком как VS Code .

Итак, приступим.

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

Если вы откроете свой терминал, вы можете создать новый каталог — который в данном случае я решил назвать «nodejs-server» — с помощью команды mkdir nodejs-server

Затем мы можем переключиться во вновь созданный каталог, запустив, cd nodejs-server и если вы используете VS Code, вы можете открыть только что созданный каталог, запустив code .

Создание нового каталога с именем «nodejs-server», проверка того, что он был создан с помощью команды «ls», переключение в этот новый каталог, а затем открытие его в VS Code.

На этом этапе у вас должен быть открыт вновь созданный пустой каталог в редакторе кода.

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

Теперь давайте добавим в этот каталог новый файл JavaScript, чтобы мы могли написать код. Я собираюсь назвать свой файл «server.js». Вы можете сделать это, создав новый файл прямо из редактора кода, или вы можете вернуться к своему терминалу и создать его оттуда, используя команду touch server.js

Хорошо, теперь приступим к кодированию.

Когда вы устанавливаете Node.js, он поставляется с несколькими модулями JavaScript, которые мы можем использовать в наших интересах. Если вы хотите узнать больше о том, какие модули доступны вам через Node.js или как использовать конкретный модуль, вы можете ознакомиться с их документацией по API .

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

В этом случае мы собираемся использовать модуль HTTP, который Node.js построил для нас, и мы можем получить к нему доступ с помощью встроенной функции require , добавив следующую строку кода в начало нашего файла JavaScript:

const http = require("http")

Теперь, когда у нас есть доступ к модулю HTTP , мы можем использовать функцию createServer (используя точечную нотацию JavaScript ), которая, как ни странно , создает для нас новый сервер . Это выглядело бы примерно так:

Мы собираемся передать другую функцию в createServer с параметром «запроса» , а параметр «ответ» , так как сцены в следующем фрагменте кода:

Параметры запроса и ответа действуют точно так, как подразумевается — они обрабатывают «запрос» и «ответ» от нашего сервера, поэтому давайте расскажем нашему серверу, как отвечать после того, как он был запрошен.

Чтобы не усложнять задачу , мы скажем нашему серверу ответить простым текстом, используя метод setHeader . Простым текстом будет сообщение «Hello World!», Которое мы передадим методу end, который является обязательным, так как означает, что наш ответ завершен (изображен ниже).

HTTP заголовок , по существу , набор пар ключ / значение , которое предоставляет информацию о «запрос» или «ответ», в зависимости от того , что это на «клиента» стороне или на стороне «сервера».

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

Доступ к модулю http (строка 1), использование createServer (строка 3) и определение того, как мы хотим, чтобы наш сервер отвечал с помощью setHeader (строка 4), и завершение нашего ответа сообщением (строка 5)

Последнее, что нам нужно сделать, прежде чем мы сможем запустить наш сервер, — это указать, на каком порту он будет работать на нашей локальной машине. Я собираюсь установить его на порт «3000», используя метод прослушивания . На этом этапе ваш файл JavaScript должен выглядеть так:

Указание порта, на котором должен работать сервер, путем передачи числа «3000» в метод прослушивания в строке 6.

Теперь вернемся к нашему терминалу и запустим этот файл с Node.js с помощью node server.js команды — дважды проверьте, что ваш «текущий рабочий каталог» — это «nodejs-server».

Затем перейдите в свой браузер и перейдите к localhost:3000 — или к тому порту, на котором вы указали свой сервер для работы — и вот что вы должны увидеть:

Что появляется в моем браузере (Google Chrome) после запуска моего сервера с Node.js и перехода к «localhost: 3000»

Если вы зашли так далеко, поздравляем! Вы успешно настроили веб-сервер с помощью Node.js 🙂

Теперь давайте порефакторим несколько вещей.

Вы могли заметить, что когда мы запускали команду node server.js , в нашем терминале ничего не происходило после слова. Итак, вернемся к нашему редактору кода и добавим сообщение, уведомляющее нас о том, что сервер запущен.

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

Функция обратного вызова запущена в строке 6 (после «3000»), а журнал консоли добавлен в строку 7.

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

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

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

Назначение порта его собственной переменной (с именем «порт», строка 3) и вызов «порта» в строках 10 и 11. Строка журнала консоли изменена на литерал шаблона (строка 11). Назначение createServer его собственной переменной (с именем «server», строка 5) и цепочка прослушивания «server» в строке 10.

Намного чище и удобнее для чтения!

Запущенные процессы в терминале (mac) можно остановить нажатием клавиш control + c

Наконец, вернитесь к своему терминалу, завершите запущенный ранее запущенный процесс, а затем снова запустите его с помощью команды, node server.js и вот что вы должны увидеть:

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

Помимо простого перехода в браузер, еще один способ протестировать наш сервер — через терминал, используя curl . Если вы используете Mac, велика вероятность, что curl уже установлен, но вы можете дважды проверить, выполнив команду curl -V

Предполагая, что curl установлен и сервер все еще работает, мы можем открыть новое окно терминала и запустить команду curl localhost:3000 — и результат:

Спасибо тем, кто продержался до конца, надеюсь, вы кое-что узнали. Теперь я призываю вас продолжить сборку сервера и добавить несколько HTTP-запросов !

Как создать веб-сервер на Node.js

Для создания простейшего веб-сервера нам понадобится модуль http и его метод createServer() , который будет вызываться каждый раз когда на сервер поступает http-запрос. В самом методе createServer() опишем пару заголовков и html ответ, который получит пользователь при оправке http-запроса на ip адрес компьютера, с запущенным node сервером.

Для начала создадим файл server.js в рабочей директории (имя файла не важно).

Далее отредактируем его следующим образом. В примере я использую порт 46000, т.к. он находится в списке открытых портов в моём файлволле.

Теперь запустим наш веб-сервер.

[meliorem@centos /var/www/nodejs-app ] $ node server
Node сервер запущен на localhost:46000. Нажмите Ctrl+C для остановки сервера.

Перейдем по адресу localhost:46000 для отправки одного единственного запроса и получим следующий ответ от сервера.

Вывод страницы с помощью веб-сервера на Node.js

Вывод страницы с помощью веб-сервера на Node.js

Запуск HTTP-сервера и выдача HTML-файла

Node не только содержит возможность обрабатывать JS-файлы, как мы только что сделали, он также может создать HTTP-сервер. Мы собираемся рассмотреть создание HTTP-сервера с Node-фреймворком Express для обработки HTML-файла.

В первом приложении мы только выводили что-то в консоль. Двигаясь вперёд, мы учтём чему уже научились для следующего шага, в котором мы можем организовать веб-сайт для наших пользователей. На один шаг мы станем ближе к полноценному веб-приложению.

Давайте придерживаться того же приложения, добавив фреймворк Express с выдачей HTML-файла. Нам понадобятся те же файлы (package.json, server.js) и к ним мы добавим новый файл index.html.

Express: Node-фреймворк

Одним из самых больших преимуществ Node является то, что он содержит поддержку множества пакетов. Сообщество отправляет много пакетов в npm и на момент написания в нём хранится 129257 пакетов, которые загрузили свыше 17694831 раз за последний день. Это большое достижение!

Пакеты расширяют функциональность нашего приложения и найдутся пакеты для многих разных случаев применения.

Вы, возможно, слышали о Grunt, Gulp или даже препроцессорах CSS вроде Less — всё это может быть пакетом.

Express — лёгкая платформа для создания веб-приложений с использованием Node.js. Express помогает организовать веб-приложение на стороне сервера. Сайт ExpressJS описывает его как «минимальной и гибкий Node-фреймворк для веб-приложений».

Express скрывает много внутренней работы Node, которая позволяет вам погрузиться в код приложения, получать всякие штуки и работать намного быстрее. Он прост для изучения и ещё даёт вам немного гибкости с его структурой.

Существует причина, почему в настоящее время это самый популярный фреймворк для Node. Вот несколько больших имён использующих Express:

  • MySpace
  • LinkedIn
  • Klout
  • Segment.io

Для просмотра полного списка зайдите на эту страницу.

Express поставляется с несколькими замечательными возможностями, которые добавят лёгкости в вашу разработку:

  • маршрутизация;
  • обработка запросов;
  • настройки приложения;
  • связующее программное обеспечение.

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

Установка Express

Пакеты для конкретного приложения Node определяются в package.json. Для получения установленных пакетов вы можете использовать один из двух методов:

  • Метод 1: Написать пакет в package.json.
  • Метод 2: В командной строке использовать npm install.

Мы собираемся использовать второй метод. Перейдите в командную строку и наберите:

Модификатор —save сообщает npm, что он должен записать этот пакет в ваш файл package.json. Если вы выполните эту команду и посмотрите файл package.json, то заметите, что пакет появился в разделе dependencies. Вы также заметите, что была создана новая папка с именем node_modules. В ней Node хранит пакеты для конкретного проекта.

Меняться проектами между разработчиками и сотрудниками очень легко. Просто отправьте другим пользователям ваш проект и они запустят npm install чтобы установить всё из раздела dependencies.

Поскольку у нас уже есть Node и готов Express, используем их для создания HTTP-сервера и выдачи HTML-файла нашим пользователям.

Создание HTTP-сервера и отправка HTML-файла

Начнём с лёгкой части на нашем пути — с HTML-файла. В проекте создайте новый файл index.html и поместите внутрь следующее:

Мы будем ссылаться на CSS из фреймворка Bootstrap через Bootstrap CDN, это поможет нам быстро сделать стилизацию для этой демонстрации.

Двинемся вперёд и создадим наш HTTP-сервер в Node с помощью Express. Удалите всё из файла server.js и добавьте то что нам понадобится:

Кроме этого файла больше ничего не требуется, чтобы использовать Express для запуска HTTP-сервера и отправки HTML-файла!

require() является основным путём вызова пакета в Node. После создания Express-приложения в app , мы можем определить маршрут с помощью переменной HTTP. app.get() создаёт GET маршрут /.

При создании маршрутов, мы всегда будем иметь доступ к req (запрос) и res (ответ). Запрос содержит информацию из браузера. Ответ — это то, что мы отправим обратно пользователю. Мы используем sendfile() , но гораздо больше вещей можно сделать, отправляя данные обратно в формате JSON с помощью res.json() .

Сервер запускается через app.listen() и туда же передаётся желаемый порт 8080.

Чтобы убедиться что всё работает, перейдите в командную строку, чтобы обработать этот файл и запустить сервер.

Теперь мы можем посмотреть на наш сайт в браузере по адресу http://localhost:8080.

Всякий раз, когда мы запускаем сервер с Node, он будет размещён по адресу http://localhost:НОМЕР_ПОРТА.

Это очень лёгкий и быстрый способ создать HTTP-сервер и начать разработку. Node и Express могут применяться для создания удивительных приложений или при необходимости они просто запускают простой сервер для работы.

Отлично! Мы уже много сделали с Node:

  • установили Node;
  • обработали очень простой файл;
  • использовали npm для установки пакета;
  • создали HTTP-сервер с Express;
  • отобразили HTML-файл.

Давайте сделаем следующий шаг и создадим приложение, которое на самом деле показывает соответствующие данные.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *