【问题标题】:Serve static files for sub routes inside a Express router为 Express 路由器内的子路由提供静态文件
【发布时间】:2017-07-27 09:38:08
【问题描述】:

我的一切都适用于正常路线,例如 localhost:3000/fees 等。

Screenshot of directory structure

但是当子路由出现时,它往往会出现一个问题,即我的静态文件没有提供给像 localhost:3000/fees/cfees 这样的页面。
我如何为这个子路由提供静态文件。

我用过

app.use(express.static(path.join(__dirname, 'public')));

加载静态文件

【问题讨论】:

  • 静态文件应该是基于根目录的服务器。 如何加载它们是另一回事! :)
  • @AndreyPopov 那我该怎么做。
  • 您应该提供一些示例如何在客户端加载这些文件。
  • @AndreyPopov 已编辑问题看看
  • 如何在客户端加载它们,即浏览器。粘贴车把模板中的一些代码。

标签: javascript node.js express routing


【解决方案1】:

您应该使用绝对路径而不是相对路径

例如,使用“/bundle.js”代替“bundle.js”

【讨论】:

    【解决方案2】:

    还有更多可以在您的路由器中制作:

    router.get('/fees/cfees', function(req, res) {
            res.render('cfees')
    });
    

    【讨论】:

    • 错了。它已经在 fee.js 路由中,因此我将使用 fee/fees/cfees。
    • 您混淆了条款。 NodeJS 中的路由和文件是不一样的。您可以通过附加任何视图文件在路由器中创建任何路由。例如,此代码将起作用:router.get('/a/b/c/d', function(req, res) { res.render('fees') }); (localhost:3000/a/b/c/d) 或 router.get('/fees/fees/fees/fees/cfees', function(req, res) { res.render('cfees') }); (localhost:3000/fees/fees/fees/fees/cfees)
    【解决方案3】:

    例如,如果你想使用 bootstrap.min.css,它位于 c:\my_project\public\css\bootstrap.min.css 中你的模板文件必须是这样的:

    <!DOCTYPE html>
    <html>
    
          <head>
                 ...
                 <link rel="stylesheet" href="/css/bootstrap.min.css">
          </head>
    
          <body>
                ...
          </body>
    
    </html>
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-05-07
      • 1970-01-01
      • 2021-12-10
      • 2018-05-22
      • 2012-07-19
      • 2017-08-16
      • 2020-08-03
      • 2010-11-12
      相关资源
      最近更新 更多