我尝试在使用express和ejs的node.js项目中使用样式表和javascript文件。
我的结构:
public/
-- css/
-- js/
-- images/
和我的chat.ejs文件:
<!DOCTYPE html>
<html lang="en">
<head>
<% include ../partials/head %>
</head>
<body>
.. content ..
<% include ../partials/footer %>
</body>
</html>
在我的partials / head.ejs中有代码
<link href="public/css/custom.css" rel="stylesheet">
它应该加载样式文件但它没有。顺便说一下我的主要聊天.js:
var express = require('express');
var app = express();
// set the view engine to ejs
app.set('view engine', 'ejs');
app.use(express.static(__dirname + '/public'));
// index page
app.get('/', function(req, res) {
res.render('pages/chat');
});
app.listen(3000, function(){
console.log('listening on *:3000');
});
那么如何正确使用它?
答案 0 :(得分:2)
public
文件夹实际上不会成为客户端可用的网址路径的一部分:
<link href="/css/custom.css" rel="stylesheet">
您为express.static()
提供的路径将与效果符号的网址路径合并:
// GET /css/custom.css
(__dirname + '/public') + '/css/custom.css'
因此,在请求public/css/custom.css
时,express.static()
会尝试查找:
// GET /public/css/custom.css
(__dirname + '/public') + '/public/css/custom.css'
期望文件夹结构为:
public/
-- public/
-- css/
-- js/
-- images/