Руководство для начинающих по Node.js (серверный JavaScript)

  1. Давайте рассмотрим случай:
  2. Начало работы с Node.js
  3. Как JavaScript работает на сервере?
  4. Установка Node.js
  5. Установка узла тестирования
  6. Создание HTTP-сервера
  7. Создание простого статического файлового сервера
  8. Оставайтесь в курсе !

Node.js - простыми словами - серверный JavaScript . В эти дни было много шума. Если вы слышали об этом или вы заинтересованы в изучении и получении некоторых из них - этот пост для вас.

Так в чем же заключается необходимость использования JavaScript на сервере? Чтобы прояснить концепцию Node.js, я бы хотел сравнить ее с обычными серверными языками, такими как PHP. Node.js использует основанную на событиях процедуру выполнения сервера, а не многопоточное выполнение в PHP.

Чтобы объяснить это подробнее, мы поговорим об идее Node.js вместе с предложениями и советами по установке некоторых хостинг-провайдеров . Требуются знания среднего уровня по JavaScript, jQuery и Ajax, но мы также предоставим примеры, чтобы вы могли лучше понять все это и даже поработать над ним, поэтому давайте узнаем больше о Node.js!

Давайте рассмотрим случай:

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

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

Какая разница в Node.js? Чтобы понять Node.js, вы должны иметь в виду программирование JavaScript на основе событий в браузере . Мы используем ту же технологию здесь. Вместо использования отдельного потока функция присоединяется к событию финиша «медленного доступа к веб-серверу», упомянутому выше, поэтому вы получаете полную функциональность в оптимизированном втором варианте, упомянутом выше, без каких-либо многопоточных издержек.

Начало работы с Node.js

Node.js - это JavaScript . Почему мы не можем использовать основанную на событиях функциональность JavaScript от клиента до сервера? Эта мысль, возможно, привела к развитию Node.js.

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

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

Как JavaScript работает на сервере?

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

Вот несколько предложений провайдера для хостинга Node.js:

  1. Облако Литейное
  2. Cloudnode
  3. DotCloud
  4. Duostack

Установка Node.js

Node отлично работает в операционных системах Linux, Macintosh и Solaris . В Windows вы можете установить его, используя Слой эмуляции Cygwin , Ни одна из сборок в Windows не является удовлетворительной, но все еще можно запустить что-то.

Вариант 1. Построение узла из источника.

Используйте make для сборки и установки node.js (выполните следующую команду в командной строке). Гит требуется .

git clone --depth 1 git: //github.com/joyent/node.git cd node git checkout v0.4.11 export JOBS = 2 mkdir ~ / local ./configure --prefix = $ HOME / local / node make make install echo 'export PATH = $ HOME / local / node / bin: $ PATH' >> ~ / .profile echo 'export NODE_PATH = $ HOME / local / node: $ HOME / local / node / lib / node_modules' >> ~ / Источник .profile ~ / .profile

Вариант 2: установка Node.js из пакета

Для пользователей Mac вы можете установить Node.js в виде пакета из https://sites.google.com/site/nodejsmacosx/ что довольно очевидно

Установка узла тестирования

Чтобы проверить вашу успешную установку Node, мы можем попробовать очень простую консольную программу «Hello World». Создайте файл с именем « test.js » и запишите в него следующий код.

var sys = require ("sys"); sys.puts ("Hello World");

Объяснение кода:

Он загружает класс sys в переменную sys. Затем он использует объект sys для выполнения консольных задач. Sys.puts - это команда, похожая на cout в C ++, поэтому для запуска приведенного выше сценария перейдите в командную строку и выполните ее с помощью следующей команды:

узел test.js

Если ваша установка прошла успешно, на экране вы увидите вывод «Hello World».

Создание HTTP-сервера

Теперь пришло время создать «Hello World» через веб-сервер, используя Node.js. Вот что мы собираемся сделать - мы создаем сервер, который выводит «Hello World» на локальный хост через порт 8080, независимо от того, какой URL-адрес, давая вам представление о том, что такое событие .

Коды:

var sys = require ("sys"), my_http = require ("http"); my_http.createServer (function (request, response) {sys.puts ("Меня выгнали"); response.writeHeader (200, {"Content-Type": "text / plain"}); response.write ("Hello World "); response.end ();}). listen (8080); sys.puts («Сервер работает на 8080»);

Объяснение кода:

Самая интересная часть в Node.js - это программирование на основе событий. Чтобы создать HTTP-сервер, нам нужна библиотека HTTP , поэтому мы идем дальше и добавляем ее, используя my_http. Мы создаем сервер по функции:

my_http.createServer (функция (запрос, ответ) {}) слушать (8080).

Функция, заданная в качестве первого аргумента, выполняется каждый раз, когда событие инициируется в порту 8080 , поэтому сама функция предлагает узлу прослушивать событие в порту 8080 . Чтобы обнаружить это, я добавил сообщение « Меня выгнали », которое будет отображаться на экране консоли при получении запроса.

Объект запроса содержит всю информацию о запросе, который был сделан на сервер . Например, он содержит строку URL. Объект ответа - это объект, который обрабатывает ответ от сервера . Сначала мы устанавливаем заголовок ответа как текстовое / простое содержимое, затем выводим « Hello World », а затем заканчиваем поток вывода. 200 - это статус ответа.

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

Создание простого статического файлового сервера

Давайте создадим простой статический файловый сервер в следующем уроке.

Коды:

var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); my_http.createServer (функция (запрос, ответ) {var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); путь.exists (full_path, функция (существует) ) {если (! существует) {response.writeHeader (404, {"Content-Type": "text / plain"}); response.write ("404 Not Found \ n"); response.end ();} еще {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write (err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (file, "binary"); response.end ();}});}});}). слушать (8080); sys.puts («Сервер работает на 8080»);

Объяснение кодов:

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

var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs");

Все эти библиотеки необходимы для программы. Его использование будет понятно в следующем коде.

var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path);

У объекта запроса есть детали запроса, как мы уже обсуждали ранее. Мы используем функцию синтаксического анализа класса URL, который мы включили, чтобы получить путь к URL запроса. После получения пути мы объединяем его с путем к текущему рабочему каталогу, чтобы получить полный путь к файлу.

Для объединения URL у нас есть функция join в библиотеке путей.

path.exists (полный_путь, функция (существует) {

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

если (! существует) {response.writeHeader (404, {"Content-Type": "text / plain"}); response.write ("404 Not Found \ n"); response.end (); } else {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write ( err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (file, "binary"); response.end ();}}); }

Теперь в функции обратного вызова, если файл не существует, мы отправляем ошибку « 404 Page Not Found ».

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

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

var sys = require ("sys"), my_http = require ("http"), path = require ("path"), url = require ("url"), filesys = require ("fs"); my_http.createServer (функция (запрос, ответ) {var my_path = url.parse (request.url) .pathname; var full_path = path.join (process.cwd (), my_path); путь.exists (full_path, функция (существует) ) {если (! существует) {response.writeHeader (404, {"Content-Type": "text / plain"}); response.write ("404 Not Found \ n"); response.end ();} еще {filesys.readFile (full_path, "binary", function (err, file) {if (err) {response.writeHeader (500, {"Content-Type": "text / plain"}); response.write (err + "\ n"); response.end ();} else {response.writeHeader (200); response.write (file, "binary"); response.end ();}});}});} my_http. createServer (function (request, response) {var my_path = url.parse (request.url) .pathname; load_file (my_path, response);}). listen (8080); sys.puts ("Сервер работает на 8080");

Оставайтесь в курсе !

Это все. Надеюсь, что это дает вам хорошее представление о Node.js. В следующей статье я покажу вам, как загружать и отображать количество лайков в Facebook с помощью Node.js. Оставайтесь в курсе!

Примечание редактора: этот пост написан Geo Paul для Hongkiat.com. Geo - независимый веб-разработчик / iPhone, который любит работать с PHP, Codeigniter, WordPress, jQuery и Ajax. Он имеет 4-летний опыт работы с PHP и 2-летний опыт разработки приложений для iPhone.

Похожие

Automator 101: Как автоматизировать повторяющиеся задачи на вашем Mac
Несмотря на все старые шутки о мышах с одной кнопкой и простоте, у Mac есть некоторые функции для опытных пользователей, которых Windows просто не предлагает. Automator - один из них, предлагающий простой способ
Как установить мод Minecraft
Итак, вы купили Minecraft и потратили некоторое время на то, чтобы дурачиться в глыбовой стране чудес - и теперь вы хотите немного больше опыта. Это где моды приходят. Одиночная игра Моддинг Установка модов для однопользовательского клиента - довольно запутанный процесс. Шаги варьируются от мода к моду, поэтому вы должны следовать инструкциям, приведенным для конкретного мода, который вы ищете, но общая техника та же. Я пройдусь по установке одного мода на Windows: пользователь
Всемирная паутина: учит или вредит?
Константин Ингатьев, Еврейский Колотинский Эксперты из Лаборатории Касперского Большинство пользователей компьютеров рассматривают Интернет как часть повседневной жизни. Многие из них используют его постоянно, на работе и дома, и не могут представить себе жизнь без этого инструмента, который, учитывая,
Сельдерей: обзор архитектуры и как она работает - Vinta Software
Асинхронные очереди задач - это инструменты, позволяющие программным элементам запускаться на отдельном компьютере / процессе. Он часто используется в веб-архитектурах как способ делегирования длительных задач и быстрого ответа на запросы. Делегированная
Как мне запрограммировать Honeywell 5800WAVE на L5210?
5800WAVE полностью совместим с LYNX 5210. Для L5210 чтобы использовать 5800WAVE, установите одинаковый идентификатор дома на 5800WAVE и L5210. Пока сирена находится в зоне действия, а L5210 запрограммирован на включение сирены во время тревоги, система активирует сирену. DIP-переключатели на сирене 5800WAVE расположены внутри устройства в верхнем
Как установить и использовать консоль восстановления Windows XP
Оглавление Что такое консоль восстановления? Как установить консоль восстановления на жесткий диск Как запустить консоль восстановления Удалить запрос пароля Как использовать консоль восстановления Удаление
Узнайте, как отлаживать свой JavaScript с помощью Google Chrome
... JavaScript. Для тех, кто не знает, что означает клиентская сторона, это термин, который определяет, что язык работает на «клиентской стороне», в отличие от PHP или ASP, например, которые на стороне сервера, то есть работают на «стороне сервера». Но как вы можете отлаживать приложение, которое работает на клиентском компьютере? Ответ прост, в браузере. Недостаток очевиден: если вы можете отлаживать JavaScript
Как отслеживать доход вашего сайта с помощью Google Analytics
Хотя некоторые люди создают
Решено: слот PCMCIA не работает на ноутбуке Dell Latitude E5520
Привет SpeedStep. СООБРАЖЕНИЯ ПО ВАШЕМУ ПОСТУ Я ценю ваши усилия в ответ на мой пост. Это хороший репозиторий проблем, связанных с проблемами PCMCIA / PC Card / Cardbus и некоторыми обходными путями. Я вижу, это обновленная версия вашего поста Вот : http://en.community.dell.com/support-forums/laptop/f/3518/p/19351953/19897449.aspx
Как восстановить поврежденный USB-накопитель в Linux
У всех есть флешка. Это отличные мелочи, и они облегчают защиту данных. Однако иногда флешки могут быть повреждены или просто перестать работать. Если вы являетесь пользователем Linux, и это случилось с вами, это легко исправить. В этой статье мы рассмотрим несколько очень простых трюков о том, как вернуть флешку в рабочее состояние. Примечание: уловки, описанные в этой статье, не обязательно являются исключительными для USB-накопителей и могут также использоваться
Microsoft .NET Framework: зачем он нужен и как его установить в Windows
Рекламное объявление если ты часто загружайте и устанавливайте программное обеспечение Как найти программное обеспечение с открытым исходным кодом для Windows Как найти программное обеспечение с открытым исходным кодом для Windows Вы беспокоитесь

Комментарии

Как обеспечить качественное изображение, как быстро оно становится четким, и как оно делает снимки на практике?
Как обеспечить качественное изображение, как быстро оно становится четким, и как оно делает снимки на практике? В чем разница между Sigma 70-300 APO DG и Canon 70-300 IS USM? Узнайте больше в нашем обзоре. Canon EF-S 55-250mm f / 4-5.6 IS, который мы позаимствовали в магазине Digihit.cz является часто используемым телеобъективом на практике. Это стоит сравнительно небольших
Как работает модуль родительского контроля?
Как работает модуль родительского контроля? По умолчанию модуль родительского контроля не включен, поэтому родители могут пользоваться Интернетом без ограничений. Однако вы можете настроить активацию этого модуля, когда ребенок входит в систему. Родители могут выбирать категории сайтов, которые их дети не могут смотреть. Они могут быть порнографического, вульгарного языка, предлагая нелегальное программное обеспечение, оружие и наркотики или страницы поощрять насилие и
Но как вы можете отлаживать приложение, которое работает на клиентском компьютере?
Но как вы можете отлаживать приложение, которое работает на клиентском компьютере? Ответ прост, в браузере. Недостаток очевиден: если вы можете отлаживать JavaScript через браузер, клиент также может, т. Е. Клиент на другом компьютере в другой части мира, также может получить доступ к системе и отладить файлы JavaScript. Риск этого будет зависеть от того, как реализован ваш код. Примечательно, что язык JavaScript
КАК ДАТЬ ИНТЕРНЕТ ВЕЛИКОЙ СТЕНЫ?
КАК ДАТЬ ИНТЕРНЕТ ВЕЛИКОЙ СТЕНЫ? Конечно, есть способы перейти на другую сторону стены, но мы должны подумать об этом, прежде чем приехать в Китай, потому что (как вы можете догадаться) все лозунги / страницы о способах прорыва блокады здесь заблокированы. Наименее требовательный от пользователя, потому что бесплатный и онлайн (без необходимости установки дополнительного программного обеспечения) являются прокси-шлюзами. Однако они также являются наиболее ненадежными,
5520. Как насчет тестирования ноутбуков Dell, сделанных в Китае?
5520. Как насчет тестирования ноутбуков Dell, сделанных в Китае? Карты типа PC Card не распознаются во всех трех (предыдущий вывод заключается в том, что Windows 7 по-прежнему поддерживает этот тип карт). Карты Cardbus замораживали один из ноутбуков (названный выше E5520-N) до замены клетки PCMCIA (первая попытка ремонта Dell) и замораживали другой (названный выше E5520-N). Проблемы появляются при загрузке в Linux (pendrive или live CD): появляются сообщения об ошибках
Как заблокировать сбор информации в куки?
Как заблокировать сбор информации в куки? Пользователь может в любое время отключить прием файлов cookie. Это можно сделать, изменив настройки в веб-браузере и удалив все файлы cookie. Мы резервируем, что отключение поддержки файлов может привести к сбоям в работе сайта. ×
Как улучшить производительность Minecraft?
Как улучшить производительность Minecraft? Эти семь шагов позволят вам выжать из игры дополнительную производительность, что может быть особенно важно после того, как вы добавите всевозможные захватывающие моды и пакеты текстур, которые, к сожалению, но в конечном итоге, замедляют игру даже больше, чем уже должен был начать с. Интересно, если вы пусть ваш ребенок играет
Помните функцию смартфона, которую мы всегда принимаем как должное?
Помните функцию смартфона, которую мы всегда принимаем как должное? Да, это именно так. Адаптивная яркость приглушает или осветляет дисплей в зависимости от вашего окружения, поэтому независимо от того, где вы находитесь, ваш дисплей не будет слишком темным или слишком ярким. При этом в Windows 10 функция адаптивной яркости доступна только для пользователей Pro и Enterprise. Как бы это ни было полезно, большинству из нас нравится вручную настраивать яркость экрана, чтобы мы могли
Как я могу сопоставить атрибут этого типа с JPA?
Как я могу сопоставить атрибут этого типа с JPA? Не хочешь читать? Вы можете посмотреть это здесь! Посмотри это видео на YouTube Решение: К сожалению, JPA 2.2 поддерживает только некоторые классы API даты и времени, и java.time.Duration не является одним из них. Если вы ограничены простым JPA, вам необходимо реализовать пользовательское сопоставление для атрибутов типа Duration . Как вы увидите, это не так сложно, как
Вы когда-нибудь задумывались, как программы на вашем компьютере и посещаемых вами сайтах «общаются» друг с другом?
Вы когда-нибудь задумывались, как программы на вашем компьютере и посещаемых вами сайтах «общаются» друг с другом? Читать далее ) которые программисты могут использовать для простого взаимодействия с определенными службами, такими как Windows Store. Вместо того, чтобы писать вручную весь код, который требуется приложению, чтобы его можно было считать, например, приложением UWP (универсальная платформа Windows), .NET Framework
Если вы хотите экспортировать диапазон данных в виде веб-страницы (HTML-файл), как вы справляетесь с этим?
Если вы хотите экспортировать диапазон данных в виде веб-страницы (HTML-файл), как вы справляетесь с этим? В этой статье мы обсудим, как быстро экспортировать данные Excel в выборку в файл HTML. Экспорт данных Excel в HTML-файлы с помощью команды «Сохранить как» Экспорт данных Excel в HTML-файлы с Kutools для Excel Экспортируйте область данных из файла Excel в

Так в чем же заключается необходимость использования JavaScript на сервере?
Js?
Почему мы не можем использовать основанную на событиях функциональность JavaScript от клиента до сервера?
Как JavaScript работает на сервере?
Но как вы можете отлаживать приложение, которое работает на клиентском компьютере?
Как обеспечить качественное изображение, как быстро оно становится четким, и как оно делает снимки на практике?
В чем разница между Sigma 70-300 APO DG и Canon 70-300 IS USM?
Как работает модуль родительского контроля?
Но как вы можете отлаживать приложение, которое работает на клиентском компьютере?
КАК ДАТЬ ИНТЕРНЕТ ВЕЛИКОЙ СТЕНЫ?