【问题标题】:how can I modify or replace the directory index page in Express?如何修改或替换 Express 中的目录索引页?
【发布时间】:2012-11-01 18:57:31
【问题描述】:

在 express 中,我可以像这样拥有一个带有目录索引页面的静态服务器:

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

我想修改目录索引页面,给他们不同的css,添加一些javascript,也许改变html。如果可能,我更喜欢使用尽可能多的现有功能,但如果用我自己的代码替换整个目录中间件很容易,那是一个选择。不知道从哪里开始。当然,我不想实际编辑 express 或 connect 模块中的代码。

顺便说一句,这样做的一个原因是解决我在这里提到的一个错误:How do I set up static serving in Express with an arbitrary start path?

【问题讨论】:

  • 您会根据什么决定使用“不同的 css、js、html”?您的意思是每个静态页面都不同吗?每个访客不同?不同的...??
  • 我不是在谈论静态页面,我是在谈论目录索引页面,如果你没有 index.html 并且你给一个目录的 URL,你会去那些。那些页面有 Express 和 Connect 的开发人员放入的任何 javascript 和 css。我只是想链接到我自己的文件,或者将一些js和css放入生成的html中。在所有目录索引页面上都是完全相同的。

标签: javascript node.js express


【解决方案1】:

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

作为替代解决方案,您可以 fork Connect,更改文件(位于 lib/public/directory.html 和 lib/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() 它,然后使用您的。我没有对此进行测试,但我不明白为什么它不起作用。

【讨论】:

  • 谢谢。因为我真正需要做的就是在 directory.html 文件中添加几行(以链接到 css 和 javascript 文件),所以现在没有太多理由分叉任何东西。遗憾的是,如果不破解模块就不容易定制。
  • 您最好找到一种非 hack 的方式来处理它,否则 npm 可能会覆盖您的更改。我刚刚用替代方法进行了编辑。我还没有测试它,但它应该可以工作。
猜你喜欢
  • 2021-09-23
  • 2017-10-05
  • 1970-01-01
  • 1970-01-01
  • 2011-01-07
  • 2014-02-04
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多