Как создать абсолютные ссылки в Node.js? - PullRequest
4 голосов
/ 22 января 2012

Я использую Node.js с Express, Connect и Jade.Я хочу предоставить абсолютную ссылку на маршрут в моем приложении, но я не могу найти, как это сделать.Я должен что-то упустить, потому что это кажется простой задачей.

Я могу сделать это: / myroute

Но то, что я хочу, это: http://localhost:3000/myroute

Тамгде-то это должен быть помощник, верно?

Ответы [ 3 ]

3 голосов
/ 24 января 2012

Я создал для этого своего помощника, который не кажется лучшим решением.

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 голос
/ 22 января 2012

Там нет 'помощника', но вы можете написать свои собственные, введя переменные req.query в локальные переменные jade для маршрута.

Лично я бы сделал это на стороне клиента, используя window.location.origin.

0 голосов
/ 06 июля 2013

update : на самом деле, это работает, только если req из POST, а не из GET.: (

обновление 2 : тьфу, это даже не согласуется во всех браузерах. И не в том, что у Тима. Чтобы найти решение, которое я в конечном итоге использовал, google "window.location.origin считается вредным".


req.headers.origin, по-видимому, возвращает что-то вроде 'http://example.com:1234', когда браузер нажимает' http://example.com:1234/something'.

, это похоже на прямой эквивалент @Клиентское решение Timoxley.:)

Это лишь немного проще, чем ваше, но устраняет необходимость буквального «http» (или https).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...