Глупый вопрос по Node js
В книгах написано, что сервер создается вызовом метода createServer()
var http = require("http"); http.createServer().listen(3000); Для обработки событий, в вышеуказанный метод передается функция http.createServer(function(request, response){ }); параметрами которой в свою очередь служат два объекта reqest и response. Вопрос: как эти параметры попадают в функцию? |
В смысле "как попадают"? Внутри "http.createServer" вызывается переданный Вами callback и в него передаются параметры.
var my = function(callback) { callback(123, 456); }; my(function(a, b) { console.log(a, b); }); |
Если я правильно понимаю,то вы в функции
var my = function(callback) { callback(123, 456); // вызов функции с аргументами }; руками прописываете параметры callback функции описанной ниже. my(function(a, b) { console.log(a, b); }); Когда же мы создаем обьект сервера, мы не передаем аргументы руками. Reqest & responce как-то формируются Нодой, и передаются в метод http.createServer(), а точнее в его callback функцию: http.createServer(function(request, response){ }); Если я все верно понял, то вопрос: Как формируются эти обьекты reqest & responce, и благодаря чему они передаются как аргументы сallback функции? |
|
Примерно вот так попадают.
Не знаю, как там внутри выглядить нативный модуль http, но допустим, чисто схематически как-то так: class Http { constructor(req, res) { this.req = req; this.res = res; } createServer(func) { func(this.req, this.res); } } const http = new Http({ url: '/' }, { write: (s) => console.log(s) }); И теперь пишем знакомые буквы: http.createServer(function(req, res) { if(req.url == '/') res.write('Hello, World!'); }); Запущеный код пишет Hello World в консоль - будем считать это ответом сервера. Гы! (извините, это я попробовал, как тут с кодом сообщения пейсать - щас погляжу, что вышло) |
Цитата:
|
Хе! Наверное, мне надо было добавить - "да и незачем это знать".
Тем более что из взятого вне контекста, одно этого модуля - ничего не понятно по существу сабжа. |
Цитата:
|
Спасибо, Кэп.
|
Audaxviator, как видишь класса там не наблюдается.
|
Часовой пояс GMT +3, время: 13:55. |