Знакомство с Node.JS
Автор: Azer333 17.10.2017 20:42
Введение
Здравствуйте мои старые добрые друзья (читатели). После длительного перерыва мы вновь собрались у экранов мониторов, для того, что бы познакомиться с новым, весьма перспективным языком серверного WEB-программирования JavaScript, точнее его фреймворком node.js.
Каждый день вы встречаете такие разные названия серверных языков как PHP, Perl, Ruby ну и т.д. Только вот незадача, вам это все изрядно надоело... Конечно старые добрые языки типа PHP облегчают задачу веб разработчику, но в плане производительности оставляют желать лучшего.... Например для не больших проектов PHP вполне сносный, но если проект перетекает в большие масштабы, то вы начинаете подумывать о том что необходимо купить более мощный веб сервер или перейти на тариф выше у вашего хостинга.
И тут начинаются думки, а нет ли такой технологии которая могла бы заменить устоявшие стереотипы не вызывая слишком много негативных последствий и в то же время максимально увеличить производительность ваших скриптов. И сегодня мы с твердой уверенностью можем сказать, что такая технология есть и имя ей Node.JS.
Преимущества Node.JS
Как говорилось выше, главное приимущество Node.JS является его производительность. Осуществляется это благодоря тому, что используется не стандартная архитектура общения клиента с сервером. Во первых, нету как мы все привыкли такой ципочки как «Веб сервер — серверный язык программирования», например для того, что бы привязать PHP к системе и заставить его функционировать необходимо сделать небольшие настройки в сервере (чаще всего Apach) и тем самым когда производится запрос от пользователя. Сперва ресурсы процессора расходуются на сам WEB-сервер затем еще добавляется работа для обработки данных касающихся серверным языком. То есть, если мы отправим запрос на сайт, то WEB-сервер сперва запустит отдельную ветку для вас, что подчеркиваю будет расходовать с каждым пользователем больше ресурсов. После того как будет создана ветка, потребуется запустить обработку данных с использованием на серверных языках, что заметно замедляет работу вашего сайта.
У Node.JS архитектура слегка не стандартная, для этого языка нет необходимости устанавливать и настраивать веб сервер типа Apach. При написании скриптов на Node.JS WEB-сервер пишется самостоятельно.
Первые мысли у вас в голове после прочитанного «Ну и че хорошего в этом языке если WEB-сервер нужно писать самому, что это за мазохистские выходки». На самом деле все предельно просто, еще проще чем устанавливать веб сервер как мы привыкли. Для этого в стандартной комплектации идет модуль http который вы подсоединяете к своему скрипту и активно юзайте... Как это делается мы увидим ниже, давайте продолжим говорить о преимуществах Node.js.
Мы все привыкли к тому, что если нам необходимо обработать данные какой то формы то необходимо перезагружать страницы и передавать тонны HTML разметки. В недавнем стали практиковать использование AJAX технологии с помощью которой можно передавать только кусочек кода... Но все равно архитектура оставалось немного неуклюжей, всегда посещало странное чувство, что чего то не хватает. Действительно, изначально архитектура AJAX строилась таким образом, чтобы работать с сервером как наша нервная система с мозгом, полностью связанно и асинхронно. В обычном варианте клиент работал асинхронно только с конкретным файлом на сервере, что не давала программисту раскрыться...
С приходом Node.JS все наши мечты воплощены в реальность, ведь во первых, два одинаковых языка как на стороне сервера так и клиента — это дает возможность писать код без лишних заморочек и переключения на новый стиль, новый синтаксис языка и т.д. Во вторых сам Node.JS работает именно так как необходимо AJAX технологии, общается с сервером в живую. То есть теперь клиент общается не с конкретным файлом а со всем веб сервером а там уже само написанный роутер распределяет запросы куда что отправить и где как обработать и сразу же послать обратно по проводам.
Грубо говоря AJAX из маленькой мечты воплотился в реальность и все данные передаются теперь по нервам что делает ваш сайт максимально динамичным и самое главное легким. Давайте теперь напишем маленький простой WEB-сервер на Node.js который будет выводить какое не будь сообщение у нас в браузере. Для начала необходимо скачать и установить Node.JS перейдите по этой ссылке.
Теперь открываем блокнот и создаем файл на диске С:\ под названием node.js и пишем следующий код:
var http = require('http'); function web(req, res) { res.writeHead(200, {'Content-Type': 'text/plain'}); res.write('Hello World'); res.end(); } http.createServer(web).listen(8888); console.log('Сервер был запущен '+Date()+' И доступен по адресу http://localhost:8888');
Давайте разберем как работает код. Как мы видим сперва мы создаем переменную http и задаем ей параметр:
require() - данная функция прикрепляет модуль, в нашем случае — это модуль http.
Данный модуль хранится где то в самом Node.JS. Данная функция так же может прикреплять и ваши самописные модули.
Теперь наша переменная http содержит в себе модуль http. Опустившись на строчку ниже мы встречаем знакомое слово function, тут все понятно, создаем функцию под именем web(req, res) с двумя параметрами req и res. Это не просто хаотично созданные параметры — это два объекта передаваемые нашей функции, первый req — хранит себе информацию о запросе к серверу, например ее GET запрос, второй res — передает информацию от браузера к серверу и наоборот. Ниже мы заметим как — это происходит, в этой функции res.writeHead(200, {'Content-Type': 'text/plain'}) — где в тег HEAD браузеру передаются параметры в скобках. А ниже res.write('Hello World') — выводит сообщение в теле документа, то есть на страничке браузера появляется текст «Hello World» и затем вызываем res.end(), чтобы завершить наш ответ. Далее функция закрывается, теперь происходит само создание нашего web-сервера, строчкой http.createServer(web).listen(8888).
Тут все довольно просто, модуль http содержит в себе функцию createServer(web) которая содержит в себе нашу главную функцию web и запускает ее и так же содержит параметр listen(8888) который прикрепляет наш web — сервер на 8888 порт. Следующая строчка выводит сообщение в командной строке что сервер был запущен и указывает дату и доступен по адресу http://localhost:8888.
Для того, чтобы запустить ваш сервер вам нужно в командной строке написать:
node c:/node.js
и перейти по ссылке http://localhost:8888, вы должны получить надпись «Hello World».
Заключение
Как видите написание и сама работа с Node.JS не очень сложная, а еще если суммировать к этому хорошую производительность и максимальную асинхронность, то можно сделать вывод что нужно срочно переходить на данную технологию а на деньги которые вы сэкономите на серверах, можете купить себе плюшек. Ну, прощаться я не буду так как рассчитываю еще писать про Node.JS и углубляться в данную технологию, эта статья была дана лишь для знакомства с технологией Node.JS.