2012-02-25 31 views
34

我做了一些前端实验,我想有一个非常基本的网络服务器来快速启动一个项目并提供文件(一个index.html文件+一些css/js/img文件)。所以我试图用node.js做一些事情,并且表达,我已经同时玩过了,但是这次我不想使用渲染引擎,因为我只有一个静态文件,我得到的代码html文件而不是资产(错误404):基本的网络服务器与node.js和快递服务的HTML文件和资产

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

app.configure(function(){ 
    app.use(express.static(__dirname + '/static')); 
}); 

app.get('/', function(req, res){ 
    res.sendFile(__dirname + '/index.html'); 
}); 

app.listen(3000); 

有一个简单的方法来做到这一点(在一个文件中如果可能的话)或Express需要使用视图和渲染引擎?

回答

13

你可以使用a solution like this in node.js(链接不再工作),正如我之前关于博客。

总结,安装连接npm install connect

然后将此代码粘贴到名为server.js的文件中与HTML/CSS/JS文件位于同一文件夹中。

var util = require('util'), 
    connect = require('connect'), 
    port = 1337; 

connect.createServer(connect.static(__dirname)).listen(port); 
util.puts('Listening on ' + port + '...'); 
util.puts('Press Ctrl + C to stop.'); 

现在导航到该文件夹​​中的终端,运行node server.js,这会给你一个临时的Web服务器在http://localhost:1337

+0

完美的,没用过连接单独谢谢:),我不知道那会是这么简单... – djevg 2012-02-25 13:33:30

+0

哎, 使用此代码我得到的错误 XMLHttpRequest无法加载http:// SomeExternalUrl。 Access-Control-Allow-Origin不允许源http:// localhost:8888。 当我尝试跨站点脚本。 你能指导我什么,我需要改变,让这个跨站点脚本运行? – Guy 2012-06-24 21:39:57

+0

@Guy,这不是关于代码,而是关于浏览器策略。通常情况下,您应该在Web服务器和其他服务器上使用相同的域名,或者您可以关闭浏览器中的跨域策略。在铬 - 通过安装Cors扩展或运行带特殊标志的铬(请谷歌)。 – 2014-10-24 06:25:26

58

我碰到这来是因为我有一个类似的情况。我不需要或不喜欢模板。任何你放在公共/目录下的东西都可以作为静态内容(就像Apache一样)。所以,我把我的index.html那里使用的sendfile来处理,没有文件请求(例如:GET http://mysite/):

app.get('/', function(req,res) { 
    res.sendfile('public/index.html'); 
}); 
+14

并通过app.get(/^(.+)$/为其余文件提供服务,函数(req,res){res.sendfile('public /'+ req.params [0]);});' – guzart 2013-02-13 05:41:12

+1

有时候,人们只是在寻找简单的东西来进行快速和肮脏的测试...我们不会' t想要一个超级通用和复杂的答案......我们只是希望这个单线程能够证明/驳斥你可能有的理论......这就是为什么我发现这个答案真的有用+1 – 2015-02-06 23:15:43

+1

在express 4.14.3中: '明确弃用res.sendfile:使用res.sendFile来代替' – Wolfgang 2015-11-05 18:49:12

20

下面的代码为我工作。

var express = require('express'), 
    app = express(), 
    http = require('http'), 
    httpServer = http.Server(app); 

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

app.get('/', function(req, res) { 
    res.sendfile(__dirname + '/index.html'); 
}); 
app.listen(3000); 

这个负载与资产页面