在node.js + express + ejs上包含css和js文件

时间:2015-07-12 15:19:55

标签: javascript css node.js express ejs

我尝试在使用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');
});

那么如何正确使用它?

1 个答案:

答案 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/