Руководство для начинающих по 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.

Так в чем же заключается необходимость использования JavaScript на сервере?
Js?
Почему мы не можем использовать основанную на событиях функциональность JavaScript от клиента до сервера?
Как JavaScript работает на сервере?