如何在Express中修改或替换目录索引页面?

时间:2012-11-01 18:57:32

标签: javascript node.js express

在express中,我可以使用带有目录索引页的静态服务器:

app.configure(function() {
    app.use('/mystuff', _express.static(__dirname + "/whatever/stuff"));
    app.use('/mystuff', _express.directory(__dirname + "/whatever/stuff"));
});

我想修改目录索引页面,给它们不同的css,添加一些javascript,也许改变html。如果可能的话,我更喜欢使用尽可能多的现有功能,但如果用我自己的代码轻松替换整个目录中间件,那么这是一个选项。不知道从哪里开始。当然,我不想在快速或连接模块中实际编辑代码。

BTW,其中一个原因是解决我在这里提到的错误:How do I set up static serving in Express with an arbitrary start path?

1 个答案:

答案 0 :(得分:1)

正如您在评论中所说,express.directory功能来自Connect middleware;但是,似乎没有办法设置自定义文件。

作为替代解决方案,您可以分叉Connect,更改文件(位于lib/public/directory.htmllib/public/style.css),使用fork作为依赖项,并执行:

var connect = require('connect');

app.configure(function() {
    app.use('/mystuff', connect.static(__dirname + "/whatever/stuff"));
    app.use('/mystuff', connect.directory(__dirname + "/whatever/stuff"));
});

而不是表达的。我刚刚对此进行了测试(通过编辑node_module中的文件),并且工作正常。

修改 实际上,您可能只需从连接中抓取directory.js并修改它并将其放入您的应用中并require(),然后再使用它。我没有对此进行测试,但我不明白为什么它不起作用。