mongodb 引导链接和css文件未应用于某个url,我该怎么解决?告诉我是否需要其他文件来回答它

yrdbyhpb  于 2023-08-04  发布在  Go
关注(0)|答案(1)|浏览(65)

引导链接和css文件没有被应用到url“/list/:customListName”,但是当我将其更改为“/:customListName”时,不知何故它工作了。这背后的逻辑是什么?我如何将样式应用到这个URL“/list/:customListName”?app.js:-

const express = require('express');
const bodyParser = require('body-parser');
const date = require(__dirname + '/date.js');
const mongoose = require('mongoose');
mongoose.connect("mongodb://127.0.0.1:27017/todoListDB").then(() => console.log('connected')).catch(e => console.log(e));

const app = express();
app.set('view engine', 'ejs');
app.use(bodyParser.urlencoded({ extended: true }));
app.use(express.static(__dirname + "/public"));

const itemSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
    }
});
const Item = new mongoose.model('Item', itemSchema);

defaultItems = [
    { name: "Welcome to your Todo List" },
    { name: "Hit '+' button to add a new item" },
    { name: "<--Hit this to check" },
];

const listSchema = mongoose.Schema({
    name: {
        type: String,
        required: true,
    },
    items: [itemSchema]
});
List = mongoose.model('List', listSchema);

app.get("/", (req, res) => {
    const day = date.getDate();
    Item.find({}).then(foundItems => {
        if (foundItems.length === 0) {
            Item.insertMany(defaultItems).then(() => {
                res.redirect("/");
            }).catch((err) => {
                console.log(err);
            });
        } else {
            res.render("list", { listTitle: day, newListItems: foundItems });
        }
    })
});

app.post("/", (req, res) => {

    if ((x = req.body.newItem) !== "") {
        const itemName = req.body.newItem;
        Item.create({
            name: itemName
        });
        res.redirect("/");
    } else {
        res.redirect("/");
    }
});

// *************See here***************
app.get("/list/:customListName", (req, res) => {
    customListName = req.params.customListName;

    List.findOne({ name: customListName })
        .then((foundList) => {
            if (foundList) {
                res.render("list", { listTitle: foundList.name, newListItems: foundList.items })
            } else {
                List.create({
                    name: customListName,
                    items: defaultItems,
                });
                // *************See here***************
                res.redirect("/list/"+customListName);
            }
        })
        .catch((e) => { console.log('Error: ' + e); })

});

app.post("/delete", (req, res) => {
    const itemId = req.body.checkbox;
    Item.deleteOne({ _id: itemId }).then(() => {
        res.redirect("/");
    }).catch(e => console.log(e));
});

app.post("/work", (req, res) => {
    res.redirect("/work");
});

app.get("/about", (req, res) => {
    res.render("about", { listTitle: "About Me" });
});

app.listen(3000, () => {
    console.log("Server running on http://127.0.0.1:3000");
});

字符串
这是我在开发控制台中得到的错误:-x1c 0d1x
list.ejs:-

<%- include('header') %>
    <div class="box" id="heading">
        <h1>
            <%= listTitle %>
        </h1>
    </div>

    <div class="box">

        <% newListItems.forEach(item=> { %>

            <form action="/delete" method="post">

                <div class="item">
                    <input type="checkbox" name="checkbox" value="<%= item._id %>" onchange="this.form.submit()">
                    <p>
                        <%= item.name %>
                    </p>
                </div>

            </form>
            <% }); %>

                <form class="item" action="/" method="post">
                    <input type="text" name="newItem" placeholder="New Item" autocomplete="off">
                    <button type="submit" name="list" value="<%= listTitle %>">+</button>
                </form>
    </div>

    <%- include('footer') %>


header.ejs:-

<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <link rel="stylesheet" href="css/style.css">
    <title>Todo List</title>
</head>

<body>

3pmvbmvn

3pmvbmvn1#

简短回答:它应该是/css/style.scss而不是css/style.scss

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

字符串
道长答:
<link/>标签href属性接受绝对URL或相对URL。
有和没有前导斜杠/的相对URL的行为是不同的。前导斜杠表示链接相对于网站的根目录。
例如:
当前的URL是http://localhost:3000/list/apple,我们有这样的静态资产目录<Project Root>/public/css/style.css
如果链接标记为<link rel="stylesheet" href="css/style.css">,则style.css的HTTP请求URL将为http://localhost:3000/list/css/style.css
如果链接标记为<link rel="stylesheet" href="/css/style.css">,则style.css的HTTP请求URL将为http://localhost:3000/css/style.css
当请求到达服务器时,express将查找相对于public目录的css/style.css文件。

相关问题