在运行时添加路由 (ExpressJs)

Posted

技术标签:

【中文标题】在运行时添加路由 (ExpressJs)【英文标题】:Add Routes at Runtime (ExpressJs) 【发布时间】:2015-12-24 09:30:21 【问题描述】:

我想在运行时添加路线。我读到它是可能的,但我不太确定如何。目前我使用以下代码:

var app = express();

function CreateRoute(route)
app.use(route, require('./routes/customchat.js'));

自定义聊天看起来像

var express = require('express');
var router = express.Router();

router.route('/').get(function (req, res) 
var url =  req.baseUrl;
var roomname = url.substring(url.lastIndexOf('_') + 1);
res.render('chat',  name: roomname , year: new Date().getFullYear().toString());
);

module.exports = router;

当我在开始监听之前调用 CreateRoute 方法时,它将链接路由。但是当我在运行时这样做时,它不会创建新路线。 我的目标是添加路由添加运行时。我将生成一个类似 /room_Date 的路径。这应该在运行时使用模板 customchat 添加。

我使用的是 express 版本 4.13。

提前感谢您的帮助。

【问题讨论】:

到底是什么问题?您目前正在尝试做什么,哪些不符合您的预期输出? @YuriZarubin 编辑我的帖子希望它现在更清晰。 也许你应该采用这里建议的方法:***.com/questions/15344628/… 你可以修改方法以根据解析路由触发特定的控制器逻辑,而不是渲染特定的视图。 【参考方案1】:

customchat.js 应该叫customChat.js 并且是

const customChat = (req, res) => 
  const  name  =  req.params;
  const year = new Date().getFullYear().toString();
  res.render('chat',  name , year );


module.exports = customChat

然后当你创建你的应用程序时

const express = require('express')
const customChat = require('./routes/customChat.js')
const app = express()

app.use('/chat/:name', customChat)

有关详细信息,请参阅 the official Express routing 文档。

【讨论】:

以上是关于在运行时添加路由 (ExpressJs)的主要内容,如果未能解决你的问题,请参考以下文章

ExpressJS 更改路由而不刷新

使用 Express JS 路由中的 Socket.io

NodeJs + ExpressJs 应用程序路由奇怪的行为

ExpressJS - 嵌套/链接资源的 RESTful 路由设计

在 Java 中运行时添加骆驼路线

Terraform删除路由表,然后在第二次运行时将其添加(无更改)。错误或我缺少什么吗?