Как отобразить страницу Nuxt как ответ от экспресс-маршрута - PullRequest
0 голосов
/ 19 мая 2018

Мой вопрос о том, как вызвать что-то вроде res.render с пустой страницей?

В проекте используется шаблон nuxt-express - комбинацияNuxt & Expressjs.

Я знаю, что nuxt имеет: nuxt.render (req, res) и nuxt.renderRoute но я не могу заставить его работать - или найти какие-либо примеры его использования, аналогичные приведенному ниже блоку кода, где рендеринг должен выполняться после разрешения обещания.

Ранее я уже занимался этим вдругие приложения, использующие res.render, вот так ...

router.get('/', (req,res,next) => {
    dothePromise(req.query)
      .then(data => {
        res.render('pages/auth', {data:data})
      }
}

Некоторые дополнительные сведения, которые могут быть полезны:

Процесс ... ... 1026 *

1) Я ввожу страницу в сторонней системе, которая отправляет запрос GET на мою конечную точку экспресса.

2) Как только обещание разрешено в моем приложении, мне нужно вернуть HTML-контент, который затем заполняется всторонняя система внутри iframe.

Это мой первый стекerflow вопрос - если я что-то упустил или должен внести коррективы в вопрос, пожалуйста, дайте мне знать.

Спасибо за любую помощь!

1 Ответ

0 голосов
/ 20 мая 2018

Я не эксперт по Nuxt, поэтому не могу помочь вам с некоторыми подробностями, но могу сказать, что если вы начинаете с проекта nuxt-express по умолчанию, вы можете отредактировать server/index.js, добавив что-то вродеследующее:

function doThePromise( query ) {
        return new Promise( ( resolve, reject ) => {
                setTimeout( () => resolve( "hi" ), 500 );
        } );
};

app.get( '/foo', ( req, res, next ) => {
        doThePromise( req.query )
                .then( data => {
                        console.log( "rendering", res.renderRoute );
                        res.renderRoute( 'pages/foo', { data: data } );
                } );
} );

Если вы затем создадите документ vue на pages/foo.vue и получите доступ к /foo в своем браузере, обещание будет выполнено через 500 мс и выполнит обратный вызов, который отобразит маршрут и отобразит желаемыйpage.

Это решение, похоже, работает, но не учитывает две вещи:

  • Аргументом для renderRoute фактически должен быть объект контекста, содержащий req и res свойства, согласно документация .Я не знаю, как на самом деле вы должны перенаправлять данные в ответе, но это не совсем подходящий способ.
  • Я даже не уверен, что renderRoute следует использовать всюда.В документации он используется в рамках переноса объекта Nuxt Builder, который, как я подозреваю, мог бы быть одноразовой операцией, а не чем-то, что вы будете вызывать повторно каждый раз, когда делается запрос.Я не уверен, так или иначе, но, вероятно, было бы лучше проверить.Возможно, стоит посмотреть на странице nuxt-express несколько примеров того, как отрисовывать маршруты и передавать данные в процессе рендеринга.

Удачи!

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