Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/node.js/36.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Node.js 在Express.js中捕获所有根级别路由:注意事项和保留可能的路由以供将来使用?_Node.js_Routing_Express - Fatal编程技术网

Node.js 在Express.js中捕获所有根级别路由:注意事项和保留可能的路由以供将来使用?

Node.js 在Express.js中捕获所有根级别路由:注意事项和保留可能的路由以供将来使用?,node.js,routing,express,Node.js,Routing,Express,我正在使用Express.js(3.0)开发一个节点web应用程序;我希望两个用户配置文件都有干净的URL: domain.com/username 以及每个用户创建和共享的页面: domain.com/username/pagename 我真的更喜欢干净的URL,而不是像domain.com/profile/username或domain.com/pages/username/pagename那样使用 我们开发的当前路线配置如下所示: app.get('/', content.home); a

我正在使用Express.js(3.0)开发一个节点web应用程序;我希望两个用户配置文件都有干净的URL:

domain.com/username

以及每个用户创建和共享的页面:

domain.com/username/pagename

我真的更喜欢干净的URL,而不是像domain.com/profile/usernamedomain.com/pages/username/pagename那样使用

我们开发的当前路线配置如下所示:

app.get('/', content.home);
app.get('/about', content.about);
app.get('/signup', users.signup);
app.get('/login', users.login);
app.get('/:user', users.profile);
app.get('/:user/:userpage', userpage.render);
最后两条是“包罗万象”路线。现在这很好,但我不确定这是一个糟糕的设计还是实现

更重要的是,我想保留100个左右的页面名称供将来使用,如“联系人”、“职业”、“取消”、“定价”等。我不打算启动这些页面,但我想知道是否可以创建一个路由文件来捕获这些请求并将其发送到占位符页面,而不是将它们作为用户配置文件或用户生成的页面进行评估


很明显,我可以阻止创建这些用户名,但也必须有一种创造性的路由方法,并了解使用“捕获所有根级别路由”时的任何其他注意事项——由于用户和页面查找不存在的对象或页面,这可能会导致大量的数据库紧张。

您可以执行以下代码片段。这是咖啡剧本,但一般理论是一样的

placeholder = (req, res, next) ->
  res.render 'placeholder'

reserved = ['/contact','/careers','/cancels','/pricing']

each page in reserved
  app.get page, placeholder

app.get '/:user', ....

如果您决定添加一个额外的占位符页面,只需将其添加到该数组中并重新启动应用程序

我不是100%确定,但如果您将所有路由置于:user之上,则不会显示注册了您的pagename的用户。

的确,这是正确的。我曾计划在用户创建期间阻止保留页面名称。我个人不会为此担心。如果有人试图注册为“aboutus”或“contact”,那么他们可能不应该让自己的页面可见。一个简单、优雅的解决方案,Brendan。谢谢。@redben-这是javascript的perl/python/ruby语法。。。对我们这些php/java的家伙来说不是很舒服