Руководство для начинающих по Node.js (серверный JavaScript)
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:
- Облако Литейное
- Cloudnode
- DotCloud
- Duostack
Установка Node.js
Узел будет отлично работают в операционных системах Linux, Macintosh и Solaris. В Windows вы можете установить его, используя слой эмуляции Cygwin. Ни одна из сборок в Windows не является удовлетворительной, но все еще можно запустить что-то.
Вариант 1: создание узла из источника.
использование делать
собрать и установить node.js (выполнить следующее в командной строке). Git требуется.
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.puts
это команда, похожая на соиЬ
в C ++, поэтому для запуска сценария, приведенного выше, перейдите в командную строку и выполните следующую команду:
узел test.js
Если ваша установка прошла успешно, вы получите вывод hello world на экран.
Создание HTTP-сервера
Теперь пришло время создать «Hello World» через веб-сервер, используя Node.js. Вот что мы собираемся сделать - мы создать сервер, который выводит “Привет, мир” на локальный хост на порту 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. ответ
объект является объектом, который обрабатывает ответ от сервера. Сначала мы устанавливаем заголовок ответа как текст / обычный
содержание, то выводит “Привет, мир“, затем завершить выходной поток. 200 это статус ответа.
Что ж, приведенный выше пример очень простой, но мы можем видеть, что любой URL, который мы даем в браузере для одного и того же сервера, мы получаем одинаковые выходные данные, как “Привет, мир”.
Создание простого статического файлового сервера
Давайте создадим простой статический файловый сервер в следующем уроке.
Коды:
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 у нас есть функция под названием присоединиться
в библиотеке путей.
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 Страница не найдена" ошибка.
Если страница найдена, мы читаем файл 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. Оставайтесь в курсе!
Примечание редактора: Этот пост написан Гео Пол для Hongkiat.com. Geo - независимый веб-разработчик / iPhone, который любит работать с PHP, Codeigniter, WordPress, jQuery и Ajax. Имеет 4-летний опыт работы с PHP и 2-летний опыт разработки приложений для iPhone..