我正在使用带有Express,Connect和Jade的Node.js。我想在我的应用程序中提供到路由的绝对链接,但我找不到如何执行此操作。我必须遗漏一些东西,因为这似乎是一项简单的任务。
我可以这样做:/ myroute
但我想要的是:http://localhost:3000/myroute
某个地方必须有帮助,对吗?
答案 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被认为是有害的”。
req.headers.origin似乎会返回“http://example.com:1234/something”之类的内容。
这似乎与@ timoxley的客户端解决方案相当。 :)
它只比你的简单一点,但它不需要文字'http'(或https)。