2016-04-30 71 views
1

您好我是nodejs的新手,我剛剛成功在線部署nodejs應用程序。現在我想知道如何鏈接CSS,JS或圖像文件,因爲當我嘗試像我以前那樣做時,我得到錯誤GET (not found)找到一個css文件節點js

的文件夾結構是:

--public 
    --assets 
    --css 
     index.css 
    --js 
--views 
    --index.ejs 
--node modules 
app.js 
package.json 

假設我想在index.ejs的代碼鏈接index.css,我需要在我app.js文件中寫入請。

app.js代碼:

var express = require('express'); 
var app = express.createServer(); 

app.set('view engine', 'ejs'); 

app.use(express.static(__dirname + '/public')); 

app.get('/', function(req,res){ 
    res.render('index'); 
}); 


app.listen(8080,'IP_ADRESS'); 

index.ejs代碼:

<link rel="stylesheet" type="text/css" href="/css/index.css"> 
+0

您應該在html文件中添加css並將express.static文件夾設置爲「public」。向我們顯示您的app.js,以便我們可以幫助您。 – QoP

+0

更清楚了嗎? – anonym

回答

0

首先,有一件事叫做靜態文件。基本上,這是一個通過互聯網發送的文件,沒有任何修改。圖像和CSS文件通常是靜態文件。

看起來您已將靜態文件放在名爲public的文件夾中。

Express有一個發送靜態文件的內置功能,名爲express.static。你可以這樣使用它:

// Require the modules we need. 
var express = require('express'); 
var path = require('path'); 

// Create an Express app. 
var app = express(); 

// Get the path to the `public` folder. 
// __dirname is the folder that `app.js` is in. 
var publicPath = path.resolve(__dirname, 'public'); 

// Serve this path with the Express static file middleware. 
app.use(express.static(publicPath)); 

// ... 

你現在應該能夠看到靜態文件。如果您的網站通常在http://localhost:3000可訪問,您將能夠看到index.csshttp://localhost:3000/css/index.css

如果你想知道太多express.static,你可以檢查出a blog post I wrote即進入快速的靜態文件的深度。

+0

當我檢查Google Chrome瀏覽器的源代碼時,您的代碼看起來很安全我可以看到一個index.css文件,當我編輯它時,它會編輯我的代碼,但是當我嘗試編輯索引時。 css文件位於我的服務器上,沒有更新。感謝您的鏈接,讚賞 – anonym

+0

您的瀏覽器可能正在緩存'index.css'。嘗試在瀏覽器中執行[硬重載](http://stackoverflow.com/q/14969315/804100)。 –

+0

謝謝你的回答,但我已經試過了 – anonym

0

快遞服務靜態文件的基本設置:

var express = require("express"); 
var app = express(); 
... 
app.use(express.static(__dirname + '/public')); 
... 
app.listen(3000); 

現在在你的。 ejs爲了加載CSS樣式或js腳本:

<link rel="stylesheet" href="/css/index.css"/> 
+0

這對於Express 2.x是正確的。這在Express 3+中發生了變化。 –

+0

我正在使用Express 3+ – anonym