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

Обновлено: 06.07.2024

Здесь вы найдёте описание простого статического сервера, который построен сугубо на Node.js без использования какого-либо фреймворка .

Node.js может использовать множество фреймворков, которые могут помочь создать сервер

    : Один из наиболее популярных фреймворков. : Набирающий популярность фреймворк для построения приложений и сервисов : Этот фреймворк имеет богатую функциональность и не требует каких-либо дополнительных фреймворков или библиотек.

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

Пример

Вот так выглядит статический сервер на Node.js:

Задание

Попробуйте добавить в этот код описание как работает этот код. Как вариант ещё можно добавить функциональность динамических запросов.

Автором было замечено множество комментариев в духе “я скачал/скачала Node.js, и что теперь?”. Этот урок отвечает на данный вопрос и объясняет новичку, с чего начать.

Очень много путаницы у новичков из-за непонимания того, что такое Node.js. И даже описание с официального сайта не помощник.

Node.js — это просто другой способ выполнять код на вашем компьютере. Это среда выполнения языка JavaScript.

Устанавливаем Node

Node.js легко установить. Достаточно зайти на страницу загрузки официального сайта.

Я установил, и что теперь?

После установки у вас появилась новая команда в командной строке “node”. Вы можете использовать Node двумя способами.

  • Первый — без аргументов: данная команда откроет интерактивный режим в командной строке, где вы можете исполнять код JavaScript.$ node > console.log(‘Hello World’); Hello World undefined


Итак, создаем файл:

hello.js

И сохраняем его в директорию, из которой будем запускать этот файл. Чтобы перейти достаточно в командной строке написать cd полное_название_директории (ну или можно использовать относительную адресацию, о которой можно почитать здесь.

Запускаем в командной строке:


Файлы ввода/вывода с node.js

Запуск чистого JavaScript — это здорово, но не очень полезно. Поэтому в Node.js есть огромное количество библиотек (модулей) для того, чтобы делать реальные вещи. В данном примере мы откроем файл с записями и будем его обрабатывать.

example_log.txt

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

Нам нужно считать содержание файла.

my_parser.js

К счастью, Node.js сильно облегчает обработку содержания файла с помощью встроенного модуля filesystem (fs). Модуль fs имеет функцию readFile, которая берёт путь к файлу и обратный вызов. Обратный вызов будет исполнен, когда файл будет полностью прочитан. Данные файла попадают в форме типа Buffer, что является набором битов. Мы можем конвертировать в строку с помощью функции toString()

Теперь добавим парсировщик (он написан на чистом JavaScript).

my_parser.js

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


Асинхронные вызовы в node.js

Как вы заметили в прошлом примере, для Node.js характерно использование асинхронных вызовов. По существу вы пишете, что нужно делать, и когда это будет сделано, будет вызван обратный вызов, потому что node.js однопоточен. Пока вы ждёте запуска обратного вызова, Node.js может уйти и делать другие вещи вместо блокировки до завершения запроса.

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

mywebserver.js

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

Express — это фреймворк, который облегчит создание большинства обычных сайтов. Сперва вам будет необходимо установить его. Вместе с командой node у вас будет доступ к команде “npm”. Этот инструмент даёт доступ к огромному количеству модулей, созданных сообществом, в том числе и Express.

Когда вы установите модуль, он будет положен в папку node_modules в директории вашего приложения. Теперь вы сможете использовать его функциональность так, как будто он встроен.

Давайте создадим базовый статический сервер с использованием Express.

mystaticfile_server.js

Мы чуть-чуть затронули NPM в предыдущей секции, но мы хотели бы подчеркнуть, как важен этот инструмент при обычной разработке в Node.js. Тысячи модулей доступны для решения почти всех типичных проблем, с которыми вы, вероятно, можете столкнуться. Помните, что стоит проверить NPM прежде, чем изобретать велосипед. Для типичного приложения на node.js характерно иметь множество подключенных модулей.

В предыдущем примере мы вручную установили Express. Если у вас много подключенных библиотек, устанавливать их все вряд ли будет хорошей затеей. Поэтому npm использует файл package.json.

package.json

Файл package.json содержит обзор вашего приложения. Здесь много доступных полей, но представлен необходимый минимум. Секция “dependency” описывает название и версию модулей, которые вы бы хотели установить. В данном случае мы принимаем любую версию Express.3.3. В данной секции вы можете перечислить столько библиотек, сколько вам угодно.

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

Когда вы запустите команду, npm будет искать в текущей папке файл package.json. Если найдет, то установит каждую библиотеку из списка.

Организация кода в node.js

До сих пор мы использовали один файл, но так очень тяжело обслуживать проект. В большинстве приложений ваш код будет находиться в нескольких файлах. Здесь нет стандартной или принудительной организации того, какие файлы куда идут. Это не Rails. Вы делаете то, что вам хочется.

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

parser.js

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

Важной строчкой является “module.exports”. Это пояснение для Node, что вы экспортируете из этого файла. В данном случае я экспортирую конструктор, поэтому пользователи могут создавать экземпляры моего объекта типа Parser. Вы можете экспортировать, что захотите.

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

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

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

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

console . log ( 'Node сервер запущен на localhost:' + port + '. Нажмите Ctrl+C для остановки сервера.' )

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

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

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

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

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

NodeJS. Как создать сервер.

Всем привет! В предыдущей статье мы рассмотрели, как работают клиенты и серверы, а в этой – создадим свой собственный сервер на NodeJS.

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

Когда мы отправляем запрос серверу и получаем ответ, помимо данных мы получаем также и заголовки. Они содержат дополнительную информацию о запросе или ответе. Их можно сравнить с тегом head в html, где вы указываете ключевые слова, краткое описание, заголовок страницы и так далее. Заголовки не показываются браузеру, но дают ему немного больше информации об ответе для его правильной обработки. То же самое делает и браузер, когда отправляет данные на сервер.

Вот вам два типичных заголовка ответа:

Первый говорит о том, в каком формате пришел ответ, а второй – о состоянии(все прошло успешно, ошибка, страница не найдена и т.д.). В нашем сервере мы тоже сначала напишем заголовки, а уже потом будем передавать какую-то информацию.

Итак, давайте закончим нашу функцию:

Теперь с помощью метода end() мы отправляем сами данные.

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

server.listen(3000, '127.0.0.1'); // порт 3000, ip - localhost

Если вы теперь запустите наш сервер и перейдете в браузере по адресу: 127.0.0.1:3000, то получите ожидаемый ответ.

Итак, сегодня мы рассмотрели, как создать сервер в NodeJS. Спасибо за внимание!


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

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

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 0 ):

Читайте также: