我正在尝试使用 express.js 创建一个简单的 CMS,它可以动态创建路由。它从如下所示的数据库中获取 JSON:
pagesfromdb = {
home = {
paths = ['/','/home','/koti'],
render = 'home.ejs',
fi_FI = {html='<h1>Hei maailma!</h1>'},
en_US = {html='<h1>Hello World!</h1>'}
},
about = {
paths = ['/about','/tietoja'],
render = 'general.ejs',
fi_FI = {html='Tietoja'},
en_US = {html='About Us'}
}
}
并迭代创建路由的对象,如下所示:
Object.keys(pagesfromdb).forEach(function(key) {
var page = pagesfromdb[key];
app.get(page.global.paths,function(req, res){
res.render(page.render, page[language]);
});
});
现在一切正常。但问题是,每次用户修改内容和路径时,都需要重新启动整个节点应用程序。我没有找到任何 API 调用来删除路由。
有什么方法可以安全地删除用 app.get 设置的旧路线?我应该这样做吗?
有没有更好的方法来做这种路由?我确实喜欢这种方法,因为它允许我使用内置函数,速度快并且支持正则表达式。
我尝试使用 app.routes = nul 删除整个 app.routes 但它没有做任何事情,旧路线仍然存在。
确实删除它们的一件事是
delete app._router.map.get;
app._router.map.get = [];
但这真的会删除它们吗?使用起来是否安全,所以如果路由器不断重新填充,我最终不会劫持大量内存?