当前位置: 首页 > 面试题库 >

是否可以在Express.js中命名路由

燕实
2023-03-14
问题内容

基本路线是这样的:

app.get('/', function(req, res){
  res.send('hello world');
});

是否可以命名该路由并在任何模板中使用它,以便可以像这样使用它:

app.get('/', name="index", function(req, res){
  res.send('hello world');
});

Go to site <a href="{% url index %}">index page</a>.

灵感来自Django :)


问题答案:

没有开箱即用的机制。但是,您可以模仿Django的样式:定义urls.js文件,该文件将包含URL数组。首先开始:

myviews.js

exports.Index = function( req, res, next ) {
    res.send( "hello world!" );
};

urls.js

var MyViews = require( "mywviews.js" );

module.exports = [
    { name : "index", pattern : "/", view : MyViews.Index }
]

现在在 app.js (或任何主文件)中,您需要将URL绑定到Express。例如这样:

app.js

var urls = require( "urls.js" );

for ( var i = 0, l = urls.length; i < l; i++ ) {
    var url = urls[ i ];
    app.all( url.pattern, url.view );
};

现在,您可以定义自定义帮助程序(Express 3.0样式):

var urls = require( "urls.js" ), l = urls.length;
app.locals.url = function( name ) {
    for ( var i = 0; i < l; i++ ) {
        var url = urls[ i ];
        if ( url.name === name ) {
            return url.pattern;
        }
    };
};

您可以轻松地在模板中使用它。现在的问题是,它没有像Django(您可以在其中传递其他参数url)那样为您提供精美的URL创建机制。另一方面,您可以修改url功能并对其进行扩展。我不想在这里讨论所有细节,但是这是一个如何使用正则表达式的示例(您应该能够将它们与思想结合在一起)
请注意,我发布了问题,所以前段时间我遇到了同样的问题。:D



 类似资料:
  • 我试图弄清楚是否可以在Express.js应用程序的上下文中运行TestCafe测试。我的想法是创建一个表单,接受输入(如UPC代码),然后单击表单上的submit,它将导致TestCafe测试以无头模式(在某处)生成,并将UPC加载到此页面https://www.ebay.com/sh/research. 从那里,TestCafe将从页面获得结果并将它们粘贴到我的数据库中。 我把测试放在一个名为

  • 问题内容: 我正在寻找一种重命名Hashmap密钥的方法,但是我不知道在Java中是否可行。 问题答案: 尝试删除该元素,然后使用新名称再次放置它。假设地图中的键是,则可以通过以下方式实现:

  • Nrwl说在这里问。看来我是第一个! 我搞错了。我用nx原理图创建了一个名为Angular的项目。如果可能,我想重命名名称空间,以便访问我的库,如: 而不是: 我尝试在angular-cli.json和package.json中更改项目名称,但我非常确定这不是答案。 此外,nx将不能作为标记使用,因为它已经在其他地方使用。我建议使用nrwl nx。 编辑:划掉那个。我没有足够的声誉来创建新标签。如

  • 问题内容: 我想知道,有没有办法更新键值? 让我们使用以下数据: 我的资料 我正在使用set()写入数据。现在,我希望用户对其进行编辑bookTitle,并且需要在两个地方都进行更改。我尝试使用update(),但似乎无法正常工作。我只能在bookTitle中编辑bookInfoNOT books。 移动不是一种选择,因为它会删除bookData。我也尝试使用push()进行编写,但是之后,由于我

  • 问题内容: 我只想知道是否可以在Java中创建命令提示符。我的朋友要求这样做,我想知道是否可行。如果有可能,有人可以建议我一些api或其他东西吗?谢谢。 编辑:我想使其类似于Windows命令提示符 编辑2:我想制作一个SWING GUI应用程序并将命令提示符放在其中。 问题答案: 您可以使用Process API在Java中运行命令。您还可以 获取 输出并将输入 写入运行 的进程。有关更多信息,

  • 问题内容: 是否可以仅针对XHR请求限制Symfony 2路由?我想声明只能通过AJAX访问的路由。 我不想像这样在每个AJAX特定操作中添加一些额外的行: 我想定义: AJAX请求的一条规则 对相同URL进行GET / POST请求的一条规则 为了避开上述情况。 问题答案: 我知道这个问题有点老,但是与此同时 ,Symfony 2.4* 中引入 了 一种 新的解决方法 。 * 匹配表达式 对于a