Выполнение HTTP GET-запроса для рендеринга шаблона Handlebars от клиента - PullRequest
0 голосов
/ 23 января 2019

На этот вопрос есть несколько похожих вопросов, но они не дают полезного ответа. Кроме того, в отличие от других вопросов, у меня есть часть метода, который может работать.

Мое приложение использует функции Firebase Hosting и Firebase Cloud. На стороне клиента, когда пользователь нажимает кнопку, я хочу вызвать функцию HTTPS на определенном маршруте для динамической визуализации шаблона руля на основе тела запроса, отправленного клиентом. Используя Express, это будет примерно так:

// Using body-parser middleware with view engine set up:
app.get('/test-route', (req, res) => {
    const context  = req.body.context;
    res.render('my-template', context);
});

Действительно, переход к /test-route в браузере является единственным способом визуализации шаблона на экране (вы не можете сделать запрос Ajax или Fetch для визуализации с клиента, потому что это не то, что было разработано Ajax или Fetch делать - они не меняют содержимое страницы). Но это не сработает для меня, потому что мне нужно динамически визуализировать шаблон на основе тела запроса, отправленного клиентом.

Тогда я подумал о том, чтобы экспресс-маршрут отправил обратно необработанный HTML-код из шаблона клиенту:

// Using body-parser middleware with view engine set up:
app.get('/test-route', (req, res) => {
    const context  = req.body.context;
    res.render('my-template', context, (err, html) => {
        res.send(html);
    });
});

Теперь моя проблема в том, что у меня есть HTML-код документа из ответа сервера на клиенте, но как мне отобразить этот HTML-код на новой вкладке в маршруте /test-route?

Мой проект использует React и React Router, поэтому я подумал об одном решении. В дополнение к вышесказанному, определите маршрут следующим образом

<Route path="/test-route" component={PageIWantToRender}

А затем установите внутренний HTML-код этого компонента в ответ на запрос GET, сделанный на клиенте. Чтобы затем добраться до этого маршрута, я должен был бы использовать компонент <Redirect />. Проблема в том, что мне нужно, чтобы пользователь мог идти по этому маршруту, только если он уже нажал на кнопку, чтобы запустить функцию для генерации HTML.

Однако я не уверен, что это правильный путь.

Не могли бы вы сказать, является ли решение, которое я уже разработал, жизнеспособным или оптимальным, и если нет, то каков наилучший способ визуализации динамически сгенерированного шаблона на основе информации в req.body с помощью Express что звонок может поступить от клиента?

Спасибо.

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