2016-12-29 2 views
0

Мне нужно уточнить некоторые синтаксис ниже и порядок выполняемого кода.npm http и объяснение синтаксиса

Я предполагаю, что это первая начинается с создания сервера

var server = http.createServer(handleRequest);

, а затем функция server.listen запускается на выполнение.

Но в браузере, когда пользователь заканчивается на пути, таком как '/', откуда вызывается функция handleRequest, а также то, что возвращается и хранится в var server. И составляет .listen часть в server.listen часть пакета npm http так же, как createServer есть?

// Here we require/import the HTTP module 
var http = require("http"); 

// Here we define a port to listen to 
var PORT = 8080; 

// Here we create a generic function to handle requests and responses 
function handleRequest(request, response) { 

    // The below statement is triggered (client-side) when the user visits the PORT URL 
    response.end("It Works!! Path Hit: " + request.url); 
} 

// Here we use the Node HTTP package to create our server. 
// We then pass it the handleRequest function to empower it with functionality. 
var server = http.createServer(handleRequest); 

// Here we start our server so that it can begin listening to client requests. 
server.listen(PORT, function() { 

    // The below statement is triggered (server-side) when a user visits the PORT URL 
    console.log("Server listening on: http://localhost:%s", PORT); 

}); 
+0

Я знаю, что это не отвечает на вопрос, но модуль 'http' является встроенным модулем ядра Node, его нет необходимости устанавливать с помощью npm – sebasaenz

ответ

0

Модуль HTTP модуль, встроенный непосредственно в узел. createServer() возвращает экземпляр сервера, который имеет метод listen. Это существенно настраивает прослушиватель событий для события request. Когда поступает входящий запрос, HTTP направляет его на функцию handleRequest()

0

httphttp является частью узла (docs), по умолчанию не загружен, поэтому мы должны его потребовать.

var server = http.createServer(handleRequest) делает новый http.Server экземпляр, устанавливает переменную server ссылаться на этот экземпляр он только что сделал, и говорит ему, чтобы направить любые запросы функции handleRequest.

server.listen(PORT) использует созданный экземпляр http.Server и его метод прослушивания с портом любого PORT равным, говоря server для прослушивания указанного порта. Так .listen является частью модуля http

server Всякий раз, когда получает запрос, как вы идете к http://localhost:8080/ он называет handleRequest с двумя параметрами, первый запрос, а второй является ответом мы можем написать. handleRequest берет URL-адрес из заданного параметра запроса, затем записывает в параметр ответа строку плюс URL-адрес и завершает ответ, который эффективно отправляет ответ.

+0

. Спасибо за объяснение. Это становится более ясным. Когда функция handleRequest передается как параметр http.createServer, она становится свойством этого экземпляра как серверы как функция обратного вызова, которую я угадываю, так что всякий раз, когда делается запрос, вызывается функция callRequest вызова назад? – henhen

+0

@ANonymous Как вы сказали, 'handleRequest' похож на обратный вызов, это асинхронно. Таким образом, сервер ожидает запроса, а затем всякий раз, когда запрос делается на этот экземпляр сервера, он вызывает 'requestListener (requestData, responseData)' (note requestListener из документов docs [http.createServer docs] (https: // nodejs. org/api/http.html # http_http_createserver_requestlistener). requestData и responseData - это просто случайные имена, чтобы обозначить, что данные вызывают функцию с), которая является 'handleRequest' в этом сценарии. – armyf35

Смежные вопросы