小编Ton*_*rpi的帖子

使用Express.js(node.js)进行动态路由的最佳方法

我正在尝试使用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'}
    }
}
Run Code Online (Sandbox Code Playgroud)

并迭代创建路由的对象,如下所示:

Object.keys(pagesfromdb).forEach(function(key) {
    var page = pagesfromdb[key];
    app.get(page.global.paths,function(req, res){
         res.render(page.render, page[language]);
    });
});
Run Code Online (Sandbox Code Playgroud)

现在一切正常.但问题是,每次用户修改内容和路径时,都需要重新启动整个节点应用程序.我没有找到任何API调用来删除路由.

有没有办法安全地删除使用app.get设置的旧路由?我应该这样做吗?

有没有更好的方法来做这种路由?我喜欢这种方法,因为它允许我使用内置函数,速度快,支持正则表达式.

我尝试用app.routes = nul删除整个app.routes,但它没有做任何事情,旧的路线仍然存在.

确实消除它们的一件事是

delete app._router.map.get;
app._router.map.get = [];
Run Code Online (Sandbox Code Playgroud)

但是,这实际上是删除它们,是可以安全使用的,所以我不结束劫持RAM的海量如果路由器不断得到重新填充?

json router content-management-system node.js express

14
推荐指数
1
解决办法
2万
查看次数