#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);