Файл css не учитывается, когда более * один маршрут используется с express, ejs - PullRequest
0 голосов
/ 28 апреля 2020

Если я использую app.get("/compose") или app.get("/dynamic") - то есть - один маршрут, мой CSS файл вступает в силу и h1, p соответственно оформляется, но если я использую app.get("/posts/dynamic") - то is - двойной маршрут, мой CSS файл не учитывается, хотя верхние и нижние колонтитулы работают нормально

Мой app.js файл:

   const express = require("express");
   const app = express();

   app.use(express.static(__dirname + "/public"));

app.get("/compose", function(req, res) {
res.render("compose");
});

app.get("/posts/dynamic", function(req, res) {
res.render("dynamic");
});

app.listen(3000, function() {
console.log("started running on port 3000");
});

Мой dynamic.ejs файл:

<%- include("header"); -%>

<h1> Test </h1>
<p> Test Paragrapgh Content <p>

<%- include("footer"); -%>

Мой contact.ejs файл:

<%- include("header"); -%>

<h1> Contact Us </h1>
<p> Contact Us Content </p>

<%- include("footer"); -%>

Мой express.static(); где-то идет не так?

1 Ответ

0 голосов
/ 29 апреля 2020

Вот, что я пытался и работал.

  1. Установите view Engine для EJS

    app.set('view engine', 'ejs');
    
  2. , затем добавьте

    app.use(express.static('public'));
    

и при условии, что ваша структура папок:

project root 
     ├── server.js
     ├── package.json 
     └── public   
       ├── css  
         └── style.css

и в вашем header.ejs добавьте эту строку

<link rel="stylesheet" href="/css/style.css" type="text/css">

и ваш файл dynamic.ejs будет

<%- include('./header.ejs'); %>

<h1> Test </h1>
<p> Test Paragrapgh Content <p>

<%- include('./footer.ejs'); %>

Добавление

Можно также определить несколько папок одновременно

app.use(express.static('public')); 
app.use(express.static('images')); 
...