2015-07-12 76 views
0

我在使用express和ejs的node.js項目上試圖使用樣式表和javascript文件。在node.js + express + ejs上包含css和js文件

我的結構:

public/ 
    -- css/ 
    -- js/ 
    -- images/ 

和我chat.ejs文件:

<!DOCTYPE html> 
<html lang="en"> 
<head> 
    <% include ../partials/head %> 
</head> 
<body> 

.. content .. 

    <% include ../partials/footer %> 

</body> 
</html> 

,並在我的諧音/ head.ejs有代碼

<link href="public/css/custom.css" rel="stylesheet"> 

,它應該加載樣式文件,但它不。順便說一句我的主chat.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'); 
}); 

所以如何正確使用它?

回答

2

public文件夾不會實際可用的URL路徑的一部分給客戶端:

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

你給express.static()的路徑將與URL路徑的效果的組合:

// 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/ 
相關問題