Загрузка двух разных типов данных на веб-страницу с помощью обратного вызова http.createServer

#javascript #html #css #node.js #http

Вопрос:

Я пытаюсь загрузить HTML — страницу вместе с двумя отдельными CSS-файлами через обратный вызов http.createServer (). Вот важная часть кода на данный момент:

 var server = http.createServer(function (req, res) {  var htmlData = fs.readFileSync(__dirname   "/public/index.html");  res.writeHead(200, { 'Content-Type': 'text/html' });  res.write(htmlData);  res.end(); }).listen(port);  

Когда я пытаюсь загрузить это, он также пытается загрузить CSS-файлы, связанные в HTML — файле. Я пробовал как добавлять прямые ссылки в заголовок, так и добавлять скрипт в HTML-файл для добавления ссылок в заголовок, но ни то, ни другое не работает. Как я могу это сделать, не помещая содержимое CSS-файлов непосредственно в теги HTML-файла?

Ответ №1:

Вы игнорируете путь запроса и каждый раз предоставляете ему один и тот же файл.

Вам нужно подать правильный файл на основе запроса.

Например: если вы хотите обслуживать два файла index.html и style.css :

 var server = http.createServer(function (req, res) {  if (req.url === '/' || req.url === '/index.html') { // respond to both / and /index.html  var htmlData = fs.readFileSync(__dirname   "/public/index.html");  res.writeHead(200, { 'Content-Type': 'text/html' });  res.write(htmlData);  res.end();  }  else if (req.url === '/style.css') { // respond to /style.css  var cssData = fs.readFileSync(__dirname   "/public/style.css");  res.writeHead(200, { 'Content-Type': 'text/css' });  res.write(cssData);  res.end();  } }).listen(port);