如何在Node.js中创建绝对链接?

时间:2012-01-22 03:24:15

标签: node.js express connect

我正在使用带有Express,Connect和Jade的Node.js。我想在我的应用程序中提供到路由的绝对链接,但我找不到如何执行此操作。我必须遗漏一些东西,因为这似乎是一项简单的任务。

我可以这样做:/ myroute

但我想要的是:http://localhost:3000/myroute

某个地方必须有帮助,对吗?

3 个答案:

答案 0 :(得分:3)

我为此创建了自己的助手,这并不是最好的解决方案。

Helpers = {
    toAbsolute: ( url, req ) ->
        'http://' + req.headers.host + url
}

DynamicHelpers = {
    req: ( req, res ) ->
        req
}

exports.Helpers = Helpers
exports.DynamicHelpers = DynamicHelpers

我在app.coffee文件中添加帮助程序:

helpers = require './helpers.js'

# Helpers
app.helpers helpers.Helpers
app.dynamicHelpers helpers.DynamicHelpers

在我的[jade]视图中,这是我从相对URL获取绝对URL的方法:

| <a href="#{ toAbsolute( '/relativeUrl', req ) }">link text</a>

答案 1 :(得分:1)

没有'帮助',但您可以通过将req.query变量注入到路由的jade局部变量中来编写自己的帮助器。

就个人而言,我会使用window.location.origin在客户端进行。

答案 2 :(得分:0)

更新:实际上,如果req来自POST而不是GET,这似乎只能起作用。 :(

更新2 :呃,它在浏览器中甚至不一致。蒂姆也不是。为了找到我最终使用的解决方案,谷歌“window.location.origin被认为是有害的”。


当浏览器点击“http://example.com:1234”时,

req.headers.origin似乎会返回“http://example.com:1234/something”之类的内容。

这似乎与@ timoxley的客户端解决方案相当。 :)

它只比你的简单一点,但它不需要文字'http'(或https)。