#html #node.js #express
#HTML #node.js #выразить
Вопрос:
Я попытался запустить свой веб-сайт двумя способами. 1) С помощью node
2) Без использования node (просто index.html на моем компьютере) Однако результаты отличаются с точки зрения связывания таблицы стилей. Без node таблица стилей в теге style могла бы быть связана как обычно. Однако, при использовании node в качестве сервера, таблица стилей не может быть связана.
Вот структура моего кода.
/app
/server.js
/views
/statics
/index.html
/partials
/public
/javascript
/css
/main.css
/images
вот index.html тег head
<link rel="stylesheet" type="text/css" media="screen" href="../../public/css/main.css">
server.js
const express = require('express')
const app = express()
const path = require('path')
// no need to use app.use(app.router) because of that update
// function signature express.static(root, [options])
app.use(express.static('public'));
// mount root to views/statics
app.use('/', express.static('views/statics'));
const PORT = process.env.PORT || 3000;
app.listen(PORT,() => {
console.log(`Server is listening on port ${PORT}`)
});
Ответ №1:
Похоже, что вы не указали путь, по которому ваши ресурсы должны быть доступны в разделе с
app.use(express.static('public'));
Согласно документам, в таком случае подпапки из общей папки будут обслуживаться по корневому пути.
В общем случае вам следует избегать предоставления ресурсов по относительному пути. В вашем случае href="/css/main.css"
должно сработать. Узел действует как сервер, и вы определяете пути, по которым данные ресурсы доступны в server.js
. Вы не можете получить к ним доступ по пути структуры каталогов вашей файловой системы
Комментарии:
1. Большое вам спасибо. Вы упомянули об избежании использования относительного пути, тогда каков абсолютный путь в этом случае? Используя __dirname?
2. использование __dirname немного помогает, когда вам нужно реструктурировать свой проект, но что я улучшаю, так это использование href =»../ ../some / path. Это может сработать, но если вы используете относительные пути подобным образом, вам будет сложно провести рефакторинг структуры вашего сайта в будущем, когда проект станет больше.
3. Итак, каков абсолютный путь в этом случае? Обычно абсолютный путь выглядит примерно example.com нет?
Ответ №2:
Сделайте общедоступный каталог доступным, указав его как каталог ресурсов. На вашем сервере добавьте приведенный ниже код:
app.use('/assets', express.static(__dirname '/views/public'));
Тогда к статическим файлам можно получить доступ как:
<link rel="stylesheet" type="text/css" media="screen" href="/assets/css/main.css">