Как сделать объект окна доступным для Pug? - PullRequest
1 голос
/ 08 февраля 2020

Мне нравится простота Pug, но иногда он ведет себя хаотично, и трудно понять, в чем проблема. Я использую Node, Express и Pug (он же Jade), и мне нужно добавить свой URL (window.local.href) в строку. Я не могу получить Pug для доступа к window.local.href

Я читал о его интерполяции, искал в GitHub файлы Pug и здесь, в SO. По-прежнему не удается отобразить в атрибуте href текущий URL. Я успешно использовал переменные в нескольких шаблонах внутри проекта, иногда после нескольких проб и ошибок.

Но здесь я застрял. Попытка грубой силы выйти из этого:

    script.
        currentURL = window.location.href
        console.log(currentURL) // Works as expected
        console.log(window.location.href) // Works as expected

    pre= currentURL // undefined
    pre= window.location.href // error because everything is undefined
    input.sample(type='button', value="alert href", onclick="alert(window.location.href)") // Works as expected

Также прошла (на всякий случай):

a(href = 'https://url-to-append-it-to.com/?status=!{window.location.href}')
a(href = 'https://url-to-append-it-to.com/?status=#{window.location.href}')
a(href = 'https://url-to-append-it-to.com/?status=${window.location.href}')
a(href = `https://url-to-append-it-to.com/?status=${currentURL}`)
a(href = `https://url-to-append-it-to.com/?status=#{window.location.href}`)
a(href = `https://url-to-append-it-to.com/?status=!{window.location.href}`)

А также (по одному):

- currentURL = window.location.href // Cannot read property 'location' of undefined

a(href=${window.location.href}) // Unexpected token
a(href=#{window.location.href}) // Unexpected character '#'
a(href=window.location.href) // Cannot read property 'location' of undefined
a(href=${currentURL}) // Unexpected token
a(href=#{currentURL}) // Unexpected character '#'
a(href=currentURL) // links to undefined
a(href=${window.location.href}) // Unexpected token

Я также безуспешно пытался прикрепить window.location.href к чему-то вроде locals.currentURL.

Пока я решил перейти из файла маршрутов: currentLocation: req.protocol + "://" + req.headers.host + req.url и использовать его следующим образом:

a(href= `https://url-to-append-it-to.com/?status=${currentLocation}`)

Это прекрасно работает, но я хочу знать, чего мне не хватает при попытке запросить локальные переменные браузера у Pug.

Я предполагаю, что теги сценариев действительно работают на на стороне клиента, когда pug рендерится, но, может быть, переменные, с которыми у меня возникают проблемы, пытаются запустить в середине рендеринга? Я не знаю.

...