Когда вы новичок, вы обнаружили сцену, которая полностью отличается от вашей предыдущей точки зрения - для чего JavaScript используется в ваших глазах? Спецэффекты? Или это просто взаимодействие с клиентом? Можно сказать, что JavaScript был впервые запускается в браузере. Однако, если вы думаете об этом таким образом, браузер просто предоставляет контекст, который определяет, что вы можете сделать с JavaScript. Здесь вы можете думать об этом как о подобном предприятии. Предприятие определяет, что вы можете сделать здесь, но оно мало что говорит о том, что может сделать сам язык JavaScript. Фактически, как полный язык, JavaScript может использоваться в разных контекстах и отражает различные способности. Упомянутые здесь Nodejs на самом деле на самом деле выражают его прямо, что обеспечивает контекст и управляющую среду, которая позволяет запускать код JavaScript в бэкэнде (из среды браузера).
Ядро маршрутизации - маршрутизация. Как следует из названия, маршрутизация относится к различным методам обработки, которые нам необходимы для обработки различных URL -адресов, таких как бизнес -логика обработки/стартовой бизнес -логики и модуля обработки/загрузки; Логика непоследовательна. В действительности, процесс маршрутизации «закончится» в модуле маршрутизации, а модуль маршрутизации не является реальным модулем, который «принимает меры» против запроса, в противном случае наше приложение не сможет быть хорошо расширенным, когда станет более сложным.
Здесь мы сначала создаем модуль с именем requestHandlers и добавляем функцию заполнителя для каждого обработчика запроса:
Кода -копия выглядит следующим образом:
функция start () {
console.log ("запрос обработчика" был вызван.
Функциональный сон (миллисекунд) {
var startTime = new Date (). getTime ();
while (new date (). gettime () <starttime+milliseconds);
}
сон (10000);
вернуть "Привет, старт";
}
function upload () {
console.log («обработчик запроса» был вызван загрузкой '. »);
вернуть "Привет, загрузка";
}
exports.start = start;
exports.upload = upload;
Таким образом, мы можем подключить обработчик запроса и модуль маршрутизации, чтобы сделать маршрут «есть способ следовать». После этого мы решили пройти серию обработчиков запроса через объект, и нам нужно использовать слабо связанные методы для введения этого объекта в функцию Router (), основной файл 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);
Как показано выше, легко сопоставить разные URL -адреса с одним и тем же обработчиком запросов: просто добавьте свойство с ключом «/» в объект, соответствующий requestHandlers.start. Таким образом, мы можем просто настроить / запустить и / обрабатывать оба запроса для запуска. После окончания, глядя на определение объекта, мы передаем его в качестве дополнительного параметра серверу, см. 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"});
var content = route (ручка, pathname);
response.write (content);
response.end ();
}
http.createserver (onrequest) .listen (8888);
console.log («Сервер начался»);
}
exports.start = start;
Таким образом, параметр дескриптора добавляется в функцию start (), а объект грандизации передается в качестве первого параметра для функции обратного вызова route (). Следующее определяет route.js:
Кода -копия выглядит следующим образом:
Функциональный маршрут (ручка, pathname) {
console.log ("ate to Mraking запрос на"+ pathname);
if (typeof handle [pathname] === 'function') {
return handle [pathname] ();
}еще{
console.log («Обработчик запроса не найден для»+pathname);
вернуть "404 не найдено";
}
}
exports.route = route;
Через приведенный выше код мы сначала проверяем, существует ли обработчик запроса, соответствующий данному пути, и если да, мы напрямую вызовут соответствующую функцию. Мы можем получить функцию обработки запроса от пропущенного объекта так же, как и получение элементов из ассоциативного массива, то есть обработка [pathname] (); Такое выражение дает людям ощущение, что оно говорит: «Привет, пожалуйста, помогите мне с этим путем». Эффект запуска программы выглядит следующим образом: