1. Установка
Во -первых, перейдите на http://nodejs.org, чтобы загрузить и установить. Версия, которую я работаю, 0,8,14. Установка очень проста, следующий шаг - следующий. Затем настройте каталог установки в пути, и MSI установит NPM (Manager Package Package).
Мой каталог установки - файлы C:/Program (x86)/nodejs. В настоящее время используйте команду команды CMD Command node -v и npm -v Команда, чтобы просмотреть установленную версию под командой NPM -V
1.1. Привет, мир
Создайте новый файл hello.js в каталоге проекта Node.js и введите строку кода в нем
console.log ('Привет, nodejs.');Введите консоли командной строки, введите каталог проектов Node.js и введите Node Hello.js
Консоль выводит «Привет, Nodejs».
1.2. Веб -версия Helloworld
Создайте новый http.js в каталоге проекта Node.js, код заключается в следующем
var http = require ("http"); http.createserver (function (запрос, ответ) {response.writehead (200, {"content-type": "text/html"}); response.write ("hello world!"); response.end ();}).Запустите службу в командной строке и нажмите Node http.js
Затем откройте адресную строку браузера и введите http: // localhost: 8000/и посмотрите Hello World! вывод на странице, и это удастся.
Версия node.js должна быть синхронизирована с API
Номер версии node.js является регулярной, ровная версия-стабильная версия, odd версия-нестабильная версия
2 Анализ кода HelloWorld
ОК, начните анализировать нашу линию HelloWorld по линии.
Ввести модули
var http = require ("http");Метод потребности используется для введения модуля, а параметр - это имя модуля. Например, модуль файловой системы может быть введен следующим образом:
var fs = require ("fs");Мы можем использовать метод require () в качестве глобального метода, но на самом деле он больше похож на локальный метод, принадлежащий определенному модулю. Его документация здесь: https://nodejs.org/api/globals.html.
Метод потребования возвращает экземпляр определенного модуля, такой как red («http»), возвращает экземпляр HTTP. Справочная документация для экземпляров HTTP здесь: https://nodejs.org/api/http.html.
Мы видим, что модуль HTTP имеет метод CreateServer (), который включает нашу вторую строку кода.
Создать сервер
Метод CreateServer () модуля HTTP принимает метод в качестве параметра, а прототип:
http.createserver ([requestListener])
requestListener - это метод, который будет связан с событием запроса класса HTTP.Server. Таким образом, когда придет запрос клиента, будет вызван requestListener.
RequestListener имеет два параметра, а прототип функции заключается в следующем:
функция (запрос, ответ) {} Тип первого запроса параметра является http.IncomingMessage , который реализует Readable Stream .
Тип второго параметра - http.ServerResponse , который реализует интерфейс Writeable Stream .
API потока здесь: https://nodejs.org/api/stream.html. В то же время, запрос и ответ являются Eventemitters, которые могут испускать конкретные события.
API EventEmitter здесь: https://nodejs.org/api/events.html#events_class_events_eventemitter. Позже мы поговорим о том, как использовать EventEmitter для запуска и обработки событий.
Давайте рассмотрим код, который мы создали сервер:
http.createserver (function (запрос, ответ) {response.writehead (200, {"content-type": "text/plain"}); response.write ("hello world!"); response.end ();}). Слушай (8000);http.createserver возвращает экземпляр Http.server. Метод прослушивания http.server может позволить серверу прослушать определенный порт, который составляет 8000 в примере.
Как вы можете видеть, мы предоставляем анонимную функцию для метода CreateServer. В этом методе мы пишем «Привет, мир!» Сообщение клиенту через параметр ответа.
Проанализировать запросы клиентов
Мы проанализировали метод http.createserver ранее. Его параметры - это метод с двумя параметрами. Один представляет запрос, отправленный клиентом, а другой представляет ответ на запись клиенту. Давайте посмотрим на параметры запроса.
Запрос - это экземпляр http.IncomingMessage . В этом случае мы можем получить параметры запроса, такие как метод HTTP, версия HTTP, URL, заголовок и т. Д. Конкретный API здесь: https://nodejs.org/api/http.html#http_http_incomingmessage.
Давайте посмотрим, изменяя helloworld.js (сохранить как helloworld2.js). Код заключается в следующем:
// ввести http -модуль var http = require ("http"); // Создание сервера, указав функцию, которая обрабатывает запросы клиента http.createserver (function (recept, response) {console.log ("method -" + request.method); console.log ("version -" + request.httpversion); console.log ("url -" + requent.url); "Текст/Plain"}); console.log ("Hello World Start Слушайте на порту 8000");Как вы можете видеть, я использовал объект консоли для вывода некоторой информации отладки и напечатанного метода HTTP, версии, URL и другой информации. Вы можете выполнить Node helloworld2.js, браузер посещает http: // localhost: 8000, а затем запустить в командную строку, чтобы увидеть, какая информация выводится. Я как это:
Наш Simple Helloworld уже может отправить некоторые данные ответа клиенту, и вы можете увидеть слова «Привет, мир!» в вашем браузере. Этот ответ отправляется клиенту через response экземпляра http.ServerResponse .
http.ServerResponse также является Stream или Eventemitter. Через это мы возвращаем код состояния HTTP, данные, заголовки HTTP и другую информацию клиенту.
Http module
В модуле http node.js строка состояния записывается клиенту с помощью метода записи HTTP.ServerResponse. Прототип метода писания выглядит следующим образом:
response.writehead (StatusCode [, StatusMessage] [, заголовки])
Первым параметром этого метода является StatestCode, который является числом, таким как 200 и 403. Остальные параметры являются необязательными. Последний параметр-заголовки, где вы можете использовать нотацию объекта JSON для написания некоторых заголовков HTTP, таких как: {“Content-Type”:”text/plain”,”Content-Length”:11} . Первый необязательный параметр centusmessage используется для указания сообщения описания состояния, которое не может быть заполнено.
HTTP заголовок
Заголовок-некоторые пары ключей. Например, «контент-тип», который мы видим в HelloWorld, является тегом заголовка, используемой для указания типа данных, который может соответствовать текстовым файлам, изображениям, видео, двоичному и т. Д. Аналогично, «длина контента» используется для указания длины данных. Есть еще много, например, «дата», «соединение» и т. Д. Пожалуйста, обратитесь к предыдущей ссылке.
Заголовок также может быть установлен отдельно, используя метод response.setHeader(name, value) HTTP.ServerResponse, и один заголовок HTTP может быть установлен за раз.
данные
После заголовка есть данные. Некоторые коды статуса, такие как 200, будут иметь некоторые данные в будущем. А некоторые, такие как 301, 404, 403, 500, большинство из них не имеют данных.
Данные записываются клиенту с помощью метода записи http.serverresponse, например:
response.setheader ("контент-тип", "text/html");Здесь мы должны упомянуть, что существуют два общих метода кодирования передачи данных HTTP:
Установите длину содержимого, передача данных с фиксированной длиной, установите заголовок по передаче кодировки в кучу, передача данных в кусочках
Как и наш текущий пример Helloworld, без установки заголовка длины содержимого, модуль HTTP node.js по умолчанию на кодировке .
Мы используем инструменты разработчика Chrome Browser для просмотра сетевых данных, которые можно четко увидеть. Как показано на рисунке ниже:
Http -ответ
Три точки, которые я отметил, - это информация о заголовке HTTP, передаваемую в браузер по примеру Helloworld.
Мы пишем данные клиенту с помощью метода записи http.serverresponse. Вы можете написать все данные одновременно, или вы можете написать данные отдельно и несколько раз. Когда объем передачи данных велик, написание многократно является более разумным подходом. Например, если вы отправляете большой файл клиенту, он больше подходит для написания несколько раз. Вы также можете использовать асинхронную особенность node.js, чтобы получить хорошую производительность.