如何在Node.js中创build绝对链接?
我使用Express,Connect和Jade来使用Node.js。 我想在我的应用程序中提供一个绝对的路线链接,但我找不到如何做到这一点。 我必须错过一些东西,因为这看起来很简单。
我可以这样做:/ myroute
但是我想要的是: http:// localhost:3000 / myroute
在某个地方一定有帮手,对吗?
我为此创造了自己的帮手,这并不是最好的解决scheme。
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>
没有“帮手”,但是你可以通过将req.queryvariables注入到路由的局部variables中来编写自己的代码。
就个人而言,我会使用window.location.origin来做客户端。
更新 :实际上,这似乎只工作如果req是从一个POST,而不是一个GET。 🙁
更新2 :呃,在浏览器中甚至不一致。 蒂姆也不是。 要find我最终使用的解决scheme,谷歌“window.location.origin被认为是有害的”。
当浏览器点击“ http://example.com:1234/something ”时,req.headers.origin似乎会返回类似于“ http://example.com:1234 ”的内容。
这似乎是相当于@ timoxley的客户端解决scheme。 🙂
这只是比你简单一点,但是它不需要字面的'http'(或https)。