Синтаксис Javascript — объявление объекта

#javascript #node.js #routes

Вопрос:

Я новичок в этом деле. Может ли кто-нибудь, пожалуйста, помочь объяснить мне этот синтаксис?

 routes = {
  "GET" : {
    "/info": (req,res) => {
        res.writeHead(httpStatus.OK, {"Content-Type": "text/html"})
        res.end("Welcome to the Info page")
      }
  },
    "POST" : {}
};
 

Более поздний объект routes вызывается в этом операторе

   if (routes[req.method][req.url]) {
      routes[req.method][req.url](req,res);
 

Похоже, что объект маршрута имеет пару ключей и значений, а затем значение имеет другую пару ключей и значений? и что такое оператор if, проверяющий «if (routes[req.метод][req.url])»?

Комментарии:

1. routes[req.метод][req.url] проверяет, существует ли путь в объектах GET, POST, PUT, OPTIONS, DELETE и т. Д., Поэтому, если бы я вызвал routes[«GET»][«/info»], это вернуло бы значение true.

Ответ №1:

Маршруты-это object , где у вас есть маршрут для определенных методов http. Например, routes["GET"]["/info"] имеет значение функции со стрелкой es6, которая принимает два аргумента: req, res .

Более поздний объект routes вызывается в этом операторе

Ваш код проверяет, существует ли свойство для метода запроса и URL-адрес запроса в routes объекте, скажем , если кто-то запросил /info с GET помощью метода, то функция обратного routes["GET"]["/info"] вызова будет вызвана с аргументами req и res , которые являются параметрами вашего маршрута.

Комментарии:

1. У меня есть еще один пример, который меня смущает const routeResponseMap = { «/информация»: «<h1>Информационная страница<h1></h1>», «/контакт» : «</h1><h1>Свяжитесь с нами<h1></h1>»,}; if (routeResponseMap[req.url]){ res.writeHead(HttpStatus. ОК, {«Тип содержимого»: «текст/html»}); res.end(карта ответов на запросы[req.url]); } Похоже, что если кто-то введет «информация», карта ответов на запросы[req.url] в операторе if будет иметь значение «информация», но res.end(карта ответов на запросы[req.ur]) возвращает html <h1>, а не информацию, когда я ее запускаю. В моем первоначальном вопросе, если я сделаю res.end(маршруты[«Get»]), вернет ли он «/info»?

2. @monkeycoder вопрос не ясен. Если этот ответ проясняет вас, пожалуйста, отметьте его правильно. Вместо этого опубликуйте второй в новом вопросе. Это не имеет отношения к текущему контексту.