Чтобы предоставить различные отзывы о различных запросах, мы вводим модуль процессора событий.
Модуль называется запросом handlers. Сначала добавляем две функции заполнителей, start () и upload ().
Код для запроса handlers.js выглядит следующим образом:
Кода -копия выглядит следующим образом:
функция start () {
console.log («Вызовите это при доступе /звезде.»);
}
function upload () {
console.log («Вызовите это при доступе/загрузке.»);
}
exports.start = start;
exports.upload = upload;
В реальных приложениях количество обработчиков запроса будет продолжать расти. Конечно, мы не хотим выполнять запрос на маршруте каждый раз, когда есть новый URL -адрес или обработчик запросов.
Картирование с обработчиком неоднократно.
Кроме того, мы не хотим иметь много, если запрос == x, а затем вызовите обработчик Y на маршруте, что сделает код выглядеть грязным и непрофессиональным.
Здесь я буду использовать концепцию ассоциативных массивов для выполнения этого требования. Мы передаем серию обработчиков запроса через объект и необходимы внедрить этот объект в функцию Route () в свободно связанной.
Давайте сначала представим этот объект в основной файл index.js:
Кода -копия выглядит следующим образом:
var server = require ("./ server");
var router = require ("./ router");
var requestHandlers = require ("./ requestHandlers");
var harder = {};
gange ["/"] = requestHandlers.start;
handle ["/start"] = requestHandlers.start;
обрабатывать ["/upload"] = requestHandlers.upload;
Server.Start (Router.Route, Handle);
Например, если я хочу добавить A /Show Map, просто добавьте ручку [" /show"] requestHandlers.show;
Ха -ха, код гораздо более краткий и упорядочен? !
Далее мы передаем объект Grank на сервер, а Server.js изменяется следующим образом:
Кода -копия выглядит следующим образом:
var http = require ("http");
var url = require ("url");
Function Start (маршрут, ручка) {
функция OnRequest (запрос, ответ) {
var pathname = url.parse (request.url) .pathname;
console.log ("запрос на" + pathname + "получен.");
маршрут (ручка, pathname);
response.writehead (200, {"content-type": "text/plain"});
response.write ("Hello World");
response.end ();
}
http.createserver (onrequest) .listen (8888);
console.log («Сервер начался»);
}
exports.start = start;
Изменить функцию route () в файле route.js соответственно:
Кода -копия выглядит следующим образом:
Функциональный маршрут (ручка, pathname) {
console.log ("ate to Mraking запрос на" + pathname);
if (typeof handle [pathname] === 'function') {
ручка [pathname] ();
} еще {
console.log («Обработчик запроса не найден для» + pathname);
}
}
exports.route = route;
Мы передаем объект ручки в качестве параметра серверу, затем получаем его по маршруту, и, наконец, маршрут определяет, существует ли обработчик запроса, соответствующий текущему пути или нет. Если он существует, вызовите соответствующую функцию.
Мы можем получить функцию обработки запроса от пропущенного объекта так же, как и для получения элементов из ассоциативного массива, поэтому у нас есть простое и плавное выражение, например, handle [pathname] ();, которое кажется упомянутым ранее: «Привет, пожалуйста, помогите мне справиться с этим путем».
Таким образом, мы можем сделать различную обработку в соответствии с различными запросами.
В следующем разделе мы дополнительно пересмотрим код, чтобы сервер позволил серверу сделать некоторые фактические операции обратной связи.