文件未应用于特定URL。我如何解决它?告诉我是否需要任何其他文件来回答它"/>
引导链接和CSS文件未应用于特定URL。我如何解决它?告诉我是否需要任何其他文件来回答它
引导链接和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");
});
这是我在开发控制台中遇到的错误:-
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>
回答如下:
简短回答:应该是
/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
将查找相对于css/style.css
目录的public
文件。
更多推荐
引导链接和CSS文件未应用于特定URL。我如何解决它?告诉我是否需要任何其他文件来回答它
发布评论