2016-04-30 73 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