【发布时间】:2016-08-23 20:38:02
【问题描述】:
我无法将 css 文件提供给我网站博客部分中的各个博客帖子。
所以它的工作方式: 转到 /blog- 你会得到博客页面,它工作正常。
但是,例如,当我尝试访问 /blog/post1 时,我遇到了错误
http://localhost:4000/blog/static/css/style.css
感谢您的帮助,因为我对表达和路由文件还很陌生。干杯。
我的文件结构是这样的
blog
/node_modules
/src
/mock
/public
/css
style.css
/templates
/partials
_head.jade
_nav.jade
blog.jade
index.jade
layout.jade
post.jade
app.js
所以它的工作方式: 转到 /blog- 你会得到博客页面,它工作正常。
但是,例如,当我尝试访问 /blog/post1 时,我遇到了错误
http://localhost:4000/blog/static/css/style.css
这是我各自文件的样子,也许我遗漏了一些东西:
app.js
"use strict";
var express = require("express"),
posts = require("./mock/posts.json");
var postsLists = Object.keys(posts).map(function(value){
return posts[value]
});
var app = express();
app.use("/static", express.static(__dirname + "/public"))
app.set("view engine", "jade");
app.set("views", __dirname + "/templates");
app.get("/", function(req, res){
res.render("index");
});
app.get("/blog/:title?", function(req, res){
var title = req.params.title;
if (title === undefined) {
res.status(503);
res.render("blog", {posts: postsLists});
} else {
var post = posts[title] || {};
res.render("post", {post: post} );
}
});
app.get("/about", function(req, res){
res.send("<h1>About Page</h1>");
})
app.get("/projects", function(req, res){
res.send("<h1>Projects Page</h1>")
})
app.listen(4000, function(){
console.log("Frontend server is running on port 4000.")
});
_head.jade
head
meta(charset="UTF-8")
link(rel="stylesheet", href="static/css/style.css")
layout.jade
doctype html
html(lang="en")
include ./partials/_head.jade
body
block content
blog.jade
extends ./layout
block content
section(id="postHolder")
for post in posts
div.post
h2 #{post.title}
p #{post.body}
a(href="/blog/" + post.title)
button Read More
post.jade
extends ./layout.jade
block content
section
div.post
h2 #{post.title}
p #{post.body}
p This is the actual post page itself.
【问题讨论】:
-
如果将
link(rel="stylesheet", href="static/css/style.css")更改为link(rel="stylesheet", href="public/css/style.css")会发生什么? -
我所有的 CSS 在我的所有页面上都停止工作。这是在我的 app.js
app.use("/static", express.static(__dirname + "/public"))的第 12 行处理的