2013-01-02 9 views
4

我想从文件夹提供html文件(如果存在),否则回退到动态应用程序。node.js/express:发送静态文件(如果存在)

目前我使用类似:

​​

我怎样才能做到这一点?

某些教程使用称为connect的模块。如果这是对我的问题最优雅的解决方案,我该如何将连接集成到我当前的代码中?

回答

3

你不必做任何特别的事情。

我假设WebContent文件夹位于根目录中。

如果您的所有静态内容与您所展示的相同的基础文件夹中,您不必多次指定它。

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

,如果你有一个名为file.html在WebContent文件夹中的文件,你现在可以通过URL访问它即本地主机:4444/file.html

+0

不,“WebContent”不在根文件夹中......这是为什么它不起作用? – Coyote

+0

@Coyote我会这么猜。因为__dirname引用了Web应用程序的根目录,因此很难说出__dirname +/../WebContent解决的问题。 – scartag

+1

谢谢!使用'app.use(express.static(path.normalize(path.join(__ dirname,'../WebContent'))));'它工作完美! – Coyote

1

您使用了大量的样板。使用routes更容易。这里有一个例子:

var routes = require('./routes'); 

app.configure(function() { 
    ... 
    app.use(express['static'](path.join(__dirname, '/../WebContent'))); 
    app.use(app.router); 
}); 

// Routes 
app.get('/', routes.index); 

路线/ index.js:

exports.index = function (req, res) { 
    res.render('index'); 
}; 

渲染你的webapp根项目根目录之外是很奇怪的。感觉像不好的做法。这是必要的吗?

+0

这是一个拼贴。 '../ WebContent'来自另一个项目,不幸的是我也绝对需要这个项目的'socket.io'。 – Coyote

+0

路线优于通常的快速使用/获取方式? – Coyote