Рендеринг EJS асинхронно (рендеринг сначала, потом данные) - PullRequest
0 голосов
/ 29 августа 2018

Я довольно новичок в использовании шаблонов движка, и мне нужно немного помочь.

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

Например:

У меня есть рендер страницы, вызывающий функцию в своем объекте данных:

res.render(root + "/pages/home/home.ejs", {
     data: render()
});

Эта функция render () довольно тяжелая и занимает несколько секунд. Мне было интересно, могу ли я сначала обработать HTML-файл, а затем разрешить асинхронной передаче данных на страницу после его завершения?

Я бы тоже хотел не делать:

render().then(data => {
    res.render(root + "/pages/home/home.ejs", {
        data: data
    })
})

Любое предложение или другие шаблонизаторы, которые я должен использовать, было бы очень полезно.

1 Ответ

0 голосов
/ 29 августа 2018

Вы визуализируете свое приложение на стороне сервера (res.render()). Таким образом, вы не можете связать данные после рендеринга шаблона. Это потому, что когда вы используете рендеринг на стороне сервера, вы генерируете html на сервере и отправляете его как ответ. После этого у вас нет доступа к клиентскому коду. (как php)

В этом случае для получения данных необходимо выполнить http-запрос клиента на стороне клиента. Затем заполните их на стороне клиента. Вы должны создать HTTP API на стороне сервера.

...