【问题标题】:Set generic route in node express application. (url/index, url/index2, url/index3...)在 node express 应用程序中设置通用路由。 (网址/索引,网址/索引2,网址/索引3 ...)
【发布时间】:2020-01-07 17:46:06
【问题描述】:

我正在从 NodeSchool.io 练习中学习反应和表达框架。
我想将所有练习文件存储在具有多个页面的单个应用程序中,例如

索引
index2
index3
index4
....

localhost:3000/indexN

但我无法为此类 URL 设置路由。 项目回购:Git Public Repo URL

尝试了各种方法,但无法解决问题。
How to configure dynamic routes with express.js

app.use("/indexn*", function(req, res) {
  res.render("indexn", "");
});

API 类型的解决方案如下所示,但这也没有帮助,因为它的参数化 URL

 // http://localhost:3000/index/2
 app.get('/index/:id', function(req , res){
     res.render('index' + req.params.id, "");
 });

我还在上述函数中尝试了各种 RegEx 模式,例如
(index)n、index:n*
但编译失败。

感谢您的帮助。

【问题讨论】:

    标签: javascript node.js regex reactjs express


    【解决方案1】:

    您可以按照正确的语法使用正则表达式(不带引号但使用/delimiters/):

    app.use(/\/index.*/, function(req, res) {
      // code
    });
    

    这将匹配任何以“/index”开头的路径。要仅匹配 "/index" 后跟数字 n,请使用模式:/\/index[0-9]*/

    您还可以使用类似 glob 的模式匹配文件路径:'/index*'

    您可以通过检查req 对象来根据请求的实际路径来处理请求。

    app.use('/index*', function(req, res) {
      res.render(req.originalUrl);
    });
    

    参见。 app.use() documentation

    【讨论】:

    • 感谢您的回答,但我不确定如何呈现/重定向页面?我尝试使用res.render("indexn", "");,但它显示错误。
    • 您好,您可以使用 req 检查实际请求的路径,以便根据它渲染您需要渲染的内容。如果您需要更多代码块,请告诉我。 (编辑)我刚刚用更多细节重新编辑了我的答案。
    • 我不确定它是否是实现目的的正确方法。但是下面的代码现在可以正常工作并且可以正确重定向。我检查了请求 baseUrl 并从字符串中删除了前面的斜杠以获取确切的页面 URL,如下所示:app.use('/index*', function(req, res) { console.log(req.baseUrl); res.render(req.baseUrl.replace('/',''), ""); });
    猜你喜欢
    • 1970-01-01
    • 2013-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    相关资源
    最近更新 更多