【问题标题】:Static views contents on dynamic routes动态路由上的静态视图内容
【发布时间】:2013-07-30 23:42:02
【问题描述】:

如果我使用这个,我的classroom.ejs 中的图像文件怎么不显示

app.configure(function() { 
   //app.use('/room1',express.static(__dirname+'/public')); 
   app.use(express.static(__dirname+'/public'));
   app.set('views', __dirname + '/public'); 
});

app.get('/room1/:nickname', function(req, res){ 
   res.render('classroom.ejs', {title: req.params.nickname});
});

如果我取消注释 app.use('/room1',express.static(__dirname+'/public'));

它有效。 无论路线如何,我都需要从/public 提取静态文件,并且考虑到它在顶部的事实, 它应该是重中之重。我正在使用 Express 3.0.x

【问题讨论】:

    标签: node.js routing express routes


    【解决方案1】:

    你可以试试这个:

    var path = require('path');
    ...
    app.use(app.router);
    app.use('/', express.static(__dirname + '/public'));
    

    【讨论】:

    • 我也一样。我的 app.configure 中只有 app.set('views', __dirname + '/public'); app.use(app.router); app.use(express.static(path.join(__dirname, 'public')));
    • 为什么需要app.use('/room1',express.static(__dirname+'/public'));
    • 这是图像在 /room1/:nickname 中显示的唯一方式。我想如果你只有 app.use(express.static(__dirname+'/public'));那么所有 css、js 和静态文件都已经从根目录 /public 中提取,因此不需要 app.use(express.static(path.join(__dirname, 'public')));。但事实并非如此。我们能不能把它设为全局,这样不管动态路由如何,所有的css、js和图片都将使用/public作为根目录,而不必声明app.use('/someroute',express.static(__dirname+'/public '));
    猜你喜欢
    • 2018-11-26
    • 2011-01-06
    • 1970-01-01
    • 2011-01-04
    • 2021-11-28
    • 2020-11-22
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多