从渲染文件表达的同一目录提供静态文件

时间:2013-03-31 19:29:53

标签: node.js express

我在express中定义了静态文件的以下中间件:

app.use(express.static(__dirname + '/public'));
app.use('/lessons', express.static(__dirname + '/lessons', { redirect : false }));

在课程文件夹中我有几个课程文件夹

lessons
|-- lesson01
|-- lesson02
.
.
.

在每个课程文件夹中都有一个我呈现的lesson.md文件。此文件引用了同一课程文件夹中的图像。我希望能够在markdown文件中使用例如img01.png来引用图像,但是表达式希望图像可以在/lessons/img01.png而不是/lessons/lesson01/img01.png中找到。

使用./img01.png作为对降价文件中图像的引用也没有帮助。

关于你如何告诉express在静态文件的同一目录中查找的任何想法?

由于

编辑:

更多信息,

获取课程文件的路线是:

app.get('/lessons/:name', function(req, res, next) {
    res.locals.controller = 'lessons';
    var name = req.params.name;
    var lesson = lessons[name];
    if (!lesson) {
      return next();
    }
    lesson.path = 'lessons/' + name;
    lesson.file = lesson.path + '/' + name + '.md';
    markdown(lesson.file, function(result, err) {
      if (err) {
        console.log(err);
      }
      lesson.body = result;
      res.locals.lesson = lesson;
      res.render('lesson');
    });
});

另外,我使用名为connect-slashes的中间件来删除每个URL末尾的斜杠。 (由于this SO question

var slashes = require('connect-slashes');
var app = express();
app.use(express.static(__dirname + '/public'));
app.use('/lessons', express.static(__dirname + '/lessons', { redirect : false }));
// add middleware to remove trailing slash in urls
app.use(slashes(false));

0 个答案:

没有答案